我試圖設置一個.csproj文件,使其具有一個條件項目組,它將刪除<ProjectReference>項目組中的所有元素。MSBuild錯誤:元素<ProjectReference>中的屬性「Remove」無法識別
例如:
<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>
但是,當我加載該項目進入2008年VS,我得到錯誤信息「中的元素‘刪除’屬性<ProjectReference>是無法識別」奇怪的是, 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)。在MSDN文章標題爲" MSBuild Items "。
.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的條件
我也嘗試將註冊表項更改爲默認值3.5。這些鍵不會配置Visual Studio,而是在創建新項目時配置默認值(http://msdn.microsoft.com/zh-cn/library/bb397428.aspx,\ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ MSBuild \ 3.5 \,\ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 2.0 \)。 那當然沒有辦法。 我也經歷了PATH環境變量,並用3.5替換了所有對2.0目錄的引用。 同樣,這並沒有產生解決方案。 – smaglio81 2009-07-24 02:07:46