我使用 MSBuild 版本 14.0。
按照此处的文档,我Build
像这样定义了自己的任务:
<Target Name="Build"
Inputs="@(Compile)"
Outputs="MyLibrary.dll">
<Csc
Sources="@(Compile)"
Resources="@(EmbeddedResource)"
References="@(Reference);@(ProjectReference)"
OutputAssembly="MyLibrary.dll"/>
</Target>
在我ItemGroup
的一个s 中,我添加了以下引用:
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.Xml" />
但是,由于以下错误,构建失败:
CSC : error CS0006: Metadata file 'System' could not be found [C:\MyLibrary.csproj]
CSC : error CS0006: Metadata file 'System.Core' could not be found C:\MyLibrary.csproj]
CSC : error CS0006: Metadata file 'System.Runtime.Serialization' could not be found [C:\MyLibrary.csproj]
CSC : error CS0006: Metadata file 'System.Xml' could not be found [C:\MyLibrary.csproj]
我怎样才能解决这个问题?
编辑:我认为 MSBuild 抛出了那个错误,因为上面错误消息中提到的所有 DLL 都位于 中C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\
,而不是包含我的.csproj
文件的文件夹中。我不想将这些引用复制并粘贴到我的项目文件夹中。我应该怎么做才能确保可以正确定位这些 DLL?
我应该怎么做才能确保可以正确定位这些 DLL?
在查看文档How to: Build Incrementally更仔细后,我发现我们应该.dll
在那些引用中包含文件类型后缀,否则 Csc.exe 编译器找不到这些文件。所以你ItemGroup
应该是:
<ItemGroup>
<Reference Include="System.dll" />
<Reference Include="System.Core.dll">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Runtime.Serialization.dll" />
<Reference Include="System.Xml.dll" />
</ItemGroup>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句