ターゲットが互いにどのように依存しているか、そして最も重要なこととして、変数がターゲット グラフをどのように移動するかがわかりません。具体例があります。CSC ターゲットにはAddModules
属性/プロパティがあります。.csproj
ファイルを使用して設定したい。以下に示すように、さまざまな解決策を試しましたが、そのうちの 1 つが機能し、他のソリューションが機能しない理由がわかりません。コード内にいくつかの質問を書きました。
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<TargetFrameworkProfile>Profile88</TargetFrameworkProfile>
<FileAlignment>512</FileAlignment>
<!--1) Why don't I get fatal error here even though <AddModules> is invalid inside the <PropertyGroup>?"-->
<!--2) Why doesn't this work (doesn't pass the AddModules to the CSC target unlike other properties like FileAlignment)?"-->
<AddModules>$(OutputPath)Ark.Weak.netmodule</AddModules>
<!--3) Why do I get the following fatal error here: "error : The attribute "Include" in element <AddModules> is unrecognized."?-->
<AddModules Include="$(OutputPath)Ark.Weak.netmodule" />
</PropertyGroup>
<ItemGroup>
<!--4) Why do I get the following fatal error here? "error : The reference to the built-in metadata "Extension" at position 1 is not allowed in this condition "'%(Extension)'=='netmodule'"."-->
<AddModules Include="@(ReferencePath)" Condition="'%(Extension)'=='netmodule'" />
<!--5) Why do I get the following fatal error here: "error : The attribute "Remove" in element <ReferencePath> is unrecognized."?-->
<ReferencePath Remove="@(AddModules)" />
<!--6) Why does this work even though <AddModules> is invalid inside the <ItemGroup>?"-->
<!--7) Why does this do the job (passes the AddModules to the CSC target)?"-->
<AddModules Include="$(OutputPath)Ark.Weak.netmodule" />
</ItemGroup>
</Project>