我将尝试设置一个 .csproj 文件,其中包含一个条件项组,该项组将删除 <ProjectReference> 项组中的所有元素。
例如:
但是,当我将项目加载到VS 2008中时,会出现错误消息“元素中的属性“Remove”无法识别”。奇怪的是,Remove属性在模式(C:\ Program Files \ Microsoft Visual Studio 9.0 \ Xml \ Schemas \ 1033 \ MSBuild \ Microsoft.Build.Core.xsd)中存在。有关此属性的MSDN文档(http://msdn.microsoft.com/en-us/library/bb651786.aspx)。并且,在名为“MSBuild Items”的MSDN文章底部有关于它的评论。
例如:
<ItemGroup>
<ProjectReference Include="..\..\..\..\Projects\Registrar\Ucsb.Sa.Registrar.Common\Ucsb.Sa.Registrar.Common\Ucsb.Sa.Registrar.Common.csproj">
<Project>{1EDDDE57-0181-41B4-B2AE-FB76450F85C8}</Project>
<Name>Ucsb.Sa.Registrar.Common</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup Condition="$(OnBuildServer) == 'true'">
<ProjectReference Remove="*" />
</ItemGroup>
<ItemGroup Condition="$(OnBuildServer) == 'true'">
<Reference Include="Ucsb.Sa.Registrar.Common">
<SpecificVersion>False</SpecificVersion>
<HintPath>$(RegCommonDll)</HintPath>
</Reference>
</ItemGroup>
但是,当我将项目加载到VS 2008中时,会出现错误消息“元素中的属性“Remove”无法识别”。奇怪的是,Remove属性在模式(C:\ Program Files \ Microsoft Visual Studio 9.0 \ Xml \ Schemas \ 1033 \ MSBuild \ Microsoft.Build.Core.xsd)中存在。有关此属性的MSDN文档(http://msdn.microsoft.com/en-us/library/bb651786.aspx)。并且,在名为“MSBuild Items”的MSDN文章底部有关于它的评论。
.csproj文件似乎指向.NET 3.5;但是我无法验证是否使用该版本的msbuild来加载项目(有人知道如何做吗?)
.csproj文件的第一行:
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
PS. 我从Build with msbuild and dynamically set project references中得到了使用条件语句的想法。