2016-04-08 11 views
2

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を使用して、私の意見では、パスをハードコーディングすることになる - それを事前に知っている。

私のパッケージを更新して実行できるようにしたい、つまり、インポートされたターゲットファイルで定義されているパスを管理するプロジェクトを実行します。

答えて

1

C++のように見えるのは、バイナリのパッケージアップデートをサポートできるようになるまでは少ししかありません。

標準ビジュアルスタジオのプロパティシートで公開されているカスタムビルドを引き続き使用したいと思っていましたが、カスタムターゲットはカスタマイズしない限り(カスタムビルドを使用するまではカスタムビルドを使用しませんでした。したがって、誰もが慣れていないものを紹介するプロパティシートは、インストールするのを忘れて、それから文句を言うでしょう)私は、次の製品アップデートを通って来る製品レベルのソリューションを得ることを望んでいました。それはそう思わない

これは、CoAppがC++バイナリ用に作成するNugetパッケージに対してCoAppを実行する方法であるため、引き続き環境変数アプローチを使用していきたいと考えていました。ターゲットファイルを変更するのは簡単です。(CoAppの書き込みNugetPackageを使用してではなくnugetパックを使用しない)

custombuildコマンドは $(MSBuildThisFileDirectory)../..//build/native/bin/x64\v90\Release のような設定のMSBuildのプロパティを拡張し、ターゲット-EXEC-プロパティは、私が思い付くことができる最高の組み合わせです $(HabitatBindir)aemcomp.exe -nonotice -mlf -dll %(Identity) のように使用されていません

二重引用符で囲まれた一重引用符で囲まれたテキストを投稿する方法を見つけたら、以下のコードを投稿してください。

関連する問題