2016-04-16 16 views
1

現在、code generator projectのナゲットパッケージをパッケージ化しています。実行可能ファイルをtoolsディレクトリに含め、プロセスにビルドターゲットを含めるまでは、ターゲットツールパスを構築する

cgbr.targetsファイル

<?xml version="1.0" encoding="utf-8" ?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Target Name="BeforeBuild"> 
     <Exec Command="cgbr.exe $(ProjectDir)"/> 
    </Target> 
</Project> 

のnuspec

<files> 
    <file src="cgbr.targets" target="build\cgbr.targets" /> 
    <file src="cgbr.json" target="content\cgbr.json" /> 
    <file src="..\bin\CGbR.Lib.dll" target="lib\CGbR.Lib.dll" /> 
    <file src="..\bin\cgbr.exe" target="tools\cgbr.exe" /> 
</files> 

コンテンツから部分的な今、私はそれがビルドプロセスに含まれていることがわかり、パッケージをインストールするとき。残念ながら、cgbr.exeへのパスは無効です。私はちょっと立ち往生しています。もちろん、私は$(SolutionDir)packages\CGbR.0.3\tools\cgbr.exeを使用することができましたが、バージョンを変更するたびに変更する必要があります。

明確にするには:パッケージツールのパスへのパスが必要です。

編集:related post

答えて

2

あなたはおそらく、ターゲットファイルからツールへの相対パスをしたいが見つかりました。番号はpredefined properties in msbuildです。これらのシナリオで最も有用なのはおそらくMSBuildThisFileDirectoryで、現在のprojファイルのディレクトリへのフルパスを返します。例:

<Exec Command="&quot;$(MSBuildThisFileDirectory)..\tools\cgbr.exe&quot; &quot;$(ProjectDir)&quot;"/> 
+0

相対パスは良いですが、私のナゲットパッケージディレクトリへの相対パスが必要です。 – Toxantron

+0

@Toxantronしかし、msbuildには "my nuget package directory"という概念はありません。しかし、あなたのナゲットパッケージディレクトリの中にある現在のファイルの場所には何かがあります。 projファイルがパッケージの "build"ディレクトリにある場合、nugetパッケージのディレクトリは "$(MSBuildThisFileDirectory).."であり、そこから何かを見つけることができます。 –

+0

今私はそれを得た。あなたは天才です!ありがとう、たくさんの男! ;) – Toxantron

関連する問題