.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>
しかし、私はVS 2008にプロジェクトをロードすると、私はエラーメッセージ「属性は「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/en-us/library/bb397428.aspx、\ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ MSBuild \ 3.5 \、\ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 2.0 \)。 それはもちろん、そのトリックをしていない。 私はPATH環境変数を使い、2.0ディレクトリへのすべての参照を3.5に置き換えました。 この場合も、これは解決策を生成しませんでした。 – smaglio81