1

私は現在、コード ジェネレーター プロジェクトtoolsの nuget パッケージをパッケージ化していますが、実行可能ファイルをディレクトリに、ビルド ターゲットをプロセスに含めるところまで来ました。

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.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>

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

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

編集:関連する投稿を見つけました

4

1 に答える 1

2

おそらく、ターゲット ファイルからツールへの相対パスが必要です。msbuild には、定義済みのプロパティが多数あります。おそらく、これらのシナリオで最も役立つのMSBuildThisFileDirectoryは、現在の proj ファイルのディレクトリへのフル パスを返すものです。例:

<Exec Command="&quot;$(MSBuildThisFileDirectory)..\tools\cgbr.exe&quot; &quot;$(ProjectDir)&quot;"/>
于 2016-04-17T00:35:38.863 に答える