4

ビルドを.NET4.5と互換性があるように更新しています。変更する必要があるのは、ilmergeの呼び出し方法を更新することです

上記のリンクから、これは基本的に次の変更を意味します。

/targetplatform:"v4,C:\windows\Microsoft.NET\Framework\v4.0.30319"

に:

/targetplatform:"v4,C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"

私のMSBuildAfterBuildターゲットでは$(MSBuildToolsPath)、次のように、を使用して前者を生成していました。

/targetplatform:v4,$(MSBuildToolsPath)

これを必要なパスに変換して、/targetplatform:"v4,C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"x64、x86、またはインストールされてしまう可能性のある異常な場所で機能するようにするための最良の方法は何ですか?

4

2 に答える 2

5

ターゲット内に GetReferenceAssemblyPaths タスクを追加します。出力を項目名またはプロパティに保存し、$(msbuildtoolsPath) をこの新しいプロパティに置き換えます。条件チェックを追加して、ILMerge に何を渡す必要があるかを判断することもできます。

<GetReferenceAssemblyPaths BypassFrameworkInstallChecks="False" TargetFrameworkMoniker=".NETFramework,Version=v4.0">
    <Output TaskParameter="FullFrameworkReferenceAssemblyPaths" PropertyName="path" />
</GetReferenceAssemblyPaths>
于 2012-06-30T20:18:29.870 に答える
0

情報 (または必要な情報の重要な要素) を含むレジストリ キーが見つかった場合は、$(Registry:<key name>[@<value name>])構文を使用してそれを取得します。

http://blogs.msdn.com/b/msbuild/archive/2007/05/04/new-registry-syntax-in-msbuild-v3-5.aspx

于 2012-06-29T20:52:50.760 に答える