sma*_*o81 2 .net msbuild visual-studio-2008 visual-studio
我正在尝试将.csproj文件设置为具有条件项组,该组将删除<ProjectReference>项组中的所有元素.
例如:
<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>
Run Code Online (Sandbox Code Playgroud)
但是,当我将项目加载到VS 2008时,我收到错误消息'属性'删除元素<ProjectReference>中的"无法识别".奇怪的是删除属性在架构中(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).并且,在MSDN文章"MSBuild Items"的底部有一个关于它的评论.
.csproj文件似乎指向.NET 3.5; 但我无法验证是否正在使用该版本的msbuild加载项目(有人知道该怎么做吗?)
.csproj文件的第一行:
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
Run Code Online (Sandbox Code Playgroud)
PS.我有了使用Build with msbuild的条件并动态设置项目引用的想法
Say*_*imi 10
您不能将" 删除"属性与静态项一起使用.静态项目是在目标之外声明的项目.您只能在动态项声明中使用此属性.动态项声明是在目标内部找到的声明.例如,看看下面的构建脚本.
<Project ToolsVersion="3.5"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ProjectReference Include="One.dll"/>
</ItemGroup>
<Target Name="Demo">
<ItemGroup>
<ProjectReference Remove="@(ProjectReference)"/>
</ItemGroup>
<Message Text="ProjectReference : @(ProjectReference)"/>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
另请注意,您不应使用不会删除所有内容的Remove ="*".它将删除当前目录中包含在ProjectReference项目组中的每个文件.如果要清除项目,则必须执行Remove ="@(ProjectReference)",其中ProjectReference是项目.
| 归档时间: |
|
| 查看次数: |
10466 次 |
| 最近记录: |