11

.NETアセンブリを入力として受け取り、別の製品で使用するために出力としてXMLを生成するコマンドラインユーティリティを開発しました。

理想的には私はそれを持っているでしょう:

  • NuGetを介してソリューションレベルのパッケージとして提供
  • プロジェクトレベルのビルド後のイベントでアクセス可能
  • 私が立ち往生しているビット:パスなしでコマンド名を指定するだけで、ビルド後のイベントでアクセス可能
    • つまり、.. \ packages \ ToolName-1.0.0.0 \ tools \ MyTool.exe / i $(TargetPath)ではなくMyTool.exe / i $(TargetPath

すでに実行できる最初の2つのこと、および上記のビルド後のイベントコマンドは問題なく機能しますが、最初にパッケージマネージャーコンソールを開いた場合に限ります(コマンドを入力しなくても、開く必要があります)。起動時にパスで何かクールなことをしているので、.. \ packages \ ToolName-1.0.0.0 \ tools\MyTool.exeを指定する必要はありません。

NuGetパッケージでInit.ps1スクリプト(またはその他のメカニズム)を使用してパスを調整し、ビルド後のイベントを作成するときにツールへの完全な相対パスを指定したり、実行を含めたりする必要がないようにすることはできますか?ビルド後のステップとしてツールを自動的に使用しますか?

-NuGetは、この種のツールを提供するための理想的なベクトルではないかもしれませんが、便利です。

4

3 に答える 3

2

これに出くわした人々のためだけに。

人々がこれに nuget パッケージを使用しているのを見てきました。たとえば、nswag.msbuild を参照して ください。

つまり、nuget パッケージには、ツールがコマンド ライン ユーティリティの実行可能ファイルとして含まれています。また、このツールへのパスを定義するいくつかの buildprops も定義します (の行に沿ったもの/packages/myToolNugetPkg/mytool.exe)。その後、msbuild タスクでこのプロパティを使用できます。

また、.NETコアは「ツール」をサポートしています。これはまさにあなたが必要としていたものです:

https://docs.microsoft.com/en-us/dotnet/core/tools/global-tools

于 2019-12-12T08:41:01.083 に答える
-2

これはあなたを助けるかもしれません-> http://lostechies.com/joshuaflanagan/2011/06/24/how-to-use-a-tool-installed-by-nuget-in-your-build-scripts/

「CD」コマンドでワイルドカードを使用してソリューションを使用したため、ポストビルドは次のようになります。

CD "$(SolutionDir)packages\ToolName*\tools"
MyTool.exe
于 2013-01-29T08:02:17.957 に答える