CoAppを使用して、いくつかのコードジェネレータ(バイナリ)をパッケージ化するためのNugetパッケージを作成しました。私はこのスニペットを含むターゲットファイルがあるMSBUILD 14.0 Visual Studio 2015 CustomBuildコマンド環境にExecがあってもSetEnvの結果が含まれない
<SetEnv Condition="'$(Platform.ToLower())' == 'x64' And '$(PlatformToolset.ToLower())' == 'v100' And ($(Configuration.ToLower().IndexOf('debug')) == -1)" Name="PATH" Prefix="true" Value="$(MSBuildThisFileDirectory)../..//build/native/bin/x64\v100\Release;">
<Output TaskParameter="OutputEnvironmentVariable" PropertyName="PATH" />
</SetEnv>
私は(CoAppを使用して)以下を定義して、ターゲットファイルを持っているコード
を生成するのMSBuild custombuildステップでこれらのコードジェネレータを使用することができるようにしたいですプロジェクトにとても似インポート(vcxprojファイル)プロジェクト内
<Import Project="..\packages\habitat.id.redist.1.0.0.5\build\native\habitat.id.redist.targets" Condition="Exists('packages\habitat.id.1.0.0.1\build\native\habitat.id.targets')" />
<Exec Command="echo %PATH%"/>
は望ましい結果、すなわち私は、私はプロジェクトから実行する実行可能ファイルを呼び出すことができるフォーム ../..//build/native/bin/x64\v100\Release;C:\
をとることを返します。 (custombuildコマンドステップとは異なりoutputs
の概念がないため除いて。そこからは動作しません構築しますので、増分)
しかし
<CustomBuild Include="..\directory\filename">
<FileType>Document</FileType>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
echo $(PATH)
</Command>
、私はそれをするSetEnvで設定された先のパスが含まれていません。
カスタムビルドステップ中にナゲット経由でパッケージ化されたコードジェネレータを呼び出すことができます。
私はcustombuild
の中のcommand
が新しいcmdで実行され、環境が設定されたユーザーまたはシステムenvを介して継承されることを理解します。また、私は/p:useenv
を使用してMsbuildを起動することができますので、私が望むすべての環境を起動してください。これは、/p:useenv
を使用して、私の意見では、パスをハードコーディングすることになる - それを事前に知っている。
私のパッケージを更新して実行できるようにしたい、つまり、インポートされたターゲットファイルで定義されているパスを管理するプロジェクトを実行します。