我使用MSBuild版本14.0。
根据文档here,我定义了我自己的Build
任务,如下所示:
<Target Name="Build"
Inputs="@(Compile)"
Outputs="MyLibrary.dll">
<Csc
Sources="@(Compile)"
Resources="@(EmbeddedResource)"
References="@(Reference);@(ProjectReference)"
OutputAssembly="MyLibrary.dll"/>
</Target>
在我的一个ItemGroup
中,我添加了以下引用:
<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?
答案 0 :(得分:1)
我该怎么做才能确保正确找到这些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>