2017-07-07 7 views
0

私の仕事では、NuGetパッケージをインストールするターゲットプロジェクトに追加されるpowershellスクリプトで事前ビルドイベントを定義する必要があります。このスクリプトは、初めての罰金、事前ビルドイベントは、このような正しい方法を追加されている:Project Pre Build Eventプロパティのリテラル文字列値を取得する方法

xcopy $(SolutionDir)Some\Path $(ProjectDir)Some\Other\Path 

私はアンインストールして、もう一度私のNuGetパッケージをインストールすると、既存の事前イベントがターゲットプロジェクトから要求されている構築。問題は、$(ProjectDir)や$(SolutionDir)のような環境変数がビルド前のイベントで使用されているとき、私のpowershellスクリプトは変数に関連付けられた値を取得するということです。そのような:

c:\Path\To\Solution\Dir 

か:

C:\Path\To\Project\Dir 

しかし、私はそれは私にそれでENV変数の文字列を与えたいです。 powershellのpre buildイベントからリテラル値を取得するにはどうすればよいですか?

ティム

UPDATE ::

私はもう少し研究を行って、それがWindowsインストーラプロジェクトでない限り、ビルドイベントでの環境変数が置き換えられないことを結論付けています。プロジェクトの事前のリテラル文字列値を取得する方法

答えて

0

私の知る限りのイベントプロパティ

を構築するには、プロジェクトの事前のリテラル文字列値は、イベントのプロパティを構築することができません。 マクロはPreprocessorで展開されるため、コードがコンパイルされる前でも発生します。それは純粋にテキストの置換です。

+0

プロジェクトの事前ビルドイベントを設定できる別の方法はありますか?また、他の人が自分のコードを持っている場合でも、同じプリビルドイベントでプロジェクトをビルドできますか? – iPhantomGuy

+0

@iPhantomGuyこの問題の鍵は、ビルドイベントで環境変数 "$(ProjectDir)"、 "$(SolutionDir)"を使用しているため、プロジェクトの事前ビルドイベントを設定できる場所ではありませんこれらの変数は、ビルド・イベントのマクロのデフォルトの変数名と見なされます。したがって、この問題を解決するには、別のID(「$(PathForProjectDir)」など)で環境変数を変更する必要があります。 –

+0

ここでその変数を定義しますか?誰かが私のパッケージをインストールして、何もせずにビルドしようとすると、それはまだ動作しますか? – iPhantomGuy

関連する問題