我正在为我的一个.NET项目编写一个MSBuild文件。由于某些原因,我不想使用Visual Studio生成的.sln和.csproj文件。我也希望获得一些编写我自己的构建文件的经验。MSBuild无法找到PresentationCore的元数据文件
我的一个源文件的引用System.Windows.Media命名空间,并与下面的消息
error CS0234: The type or namespace name 'Media' does not exist in the namespace 'System.Windows' (are you missing an assembly reference?)
所以我在构建文件中添加以下代码段无法构建...
<ItemGroup>
<Reference Include="PresentationCore">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
</ItemGroup>
我做的CSC任务如下变化...
<Target Name="ReleaseBuild">
<MakeDir Directories="$(ReleaseDir)"/>
<Csc Sources="@(SrcFile)"
OutputAssembly="$(ReleaseDir)\$(OutputAssemblyName)"
TargetType="Library"
References="@(Reference);
$(LibDir)\MyOwnLib.DLL"
Platform="$(ProcessorPlatform)">
</Csc>
</Target>
只拿到个e以下错误 - CSC : error CS0006: Metadata file 'PresentationCore' could not be found
为什么MSBuild无法在GAC中找到PresentationCore程序集?我应该提供一些额外的版本信息吗?我在很多论坛上搜索过,但似乎在圈子里,我会很高兴有什么有用的指针,问题可能是什么。
我在x64计算机上使用MSBuild 4.0并为x86目标构建。只引用MS核心库的我的构建文件工作正常。我的VS2008项目也很好。
一些进展
我能通过进行以下更改在这个问题上取得进展......
1)我添加了一个属性来指定演示文稿核心库的路径 - <PresentationCoreLibDir>C:\Windows\Microsoft.NET\assembly\GAC_32\PresentationCore\v4.0_4.0.0.0__31bf3856ad364e35</PresentationCoreLibDir>
2)增加了一个额外的参数给CSC任务这样的 - AdditionalLibPaths="$(PresentationCoreLibDir)"
3)最后附加的.DLL后缀的参考标记 - <ItemGroup> <Reference Include="PresentationCore.DLL"> <RequiredTargetFramework>4.0</RequiredTargetFramework> </Reference> </ItemGroup>
我很欣慰,我是能够解决这个问题,但有没有这样做的一个更合适的方法?我认为MSBuild引擎能够以更无缝的方式解决这个问题。任何人都可以更多地指出这一点吗?
如果删除'会发生什么 4.0 RequiredTargetFramework>'? –
Justin
我删除它,并没有改变。它仍然抱怨同样的错误。 – bincob