0

私がここで解決しようとしている問題は、今ではビジュアルスタジオがクロスプラットフォームなので、いくつかのビルド戦略を再考する必要があります。現時点では、私は自分のナゲット図書館プロジェクトでビルド後にローカルフィードにパッケージを公開しています。これにより、リモートナゲットサーバーに公開することなく、これらのパッケージを使用する他のプロジェクトで開発することができます。現在、私はそれぞれのプロジェクトのcsprojに次のターゲットを追加することによって、これを容易:クロスプラットフォームホームパスまたは条件付きプラットフォーム固有パス?

<Target Name="PushPackage" AfterTargets="Pack" Condition="'$(Configuration)'=='Debug'"> 
    <Exec Command="nuget init $(ProjectDir)\bin\debug C:\nuget" /> 
</Target> 

は、これはCに各パッケージをプッシュ:\ nuget。これはウィンドウ上で正常に動作しますが、個人がUbuntu上のVSCodeで作業している場合などは、C:\は問題ではありません。

私の質問はこれです:たとえば、 "家"をターゲットにするクロスプラットフォームの方法はありますか?私は$(Platform)を、ターゲット内のExec行の条件として使用して、条件を使用して別のコマンドを発行できると考えましたが、$(Platform)から期待できる値のリストを見つけることはできません。他のアイデアは大歓迎です。

答えて

2

クロスプラットフォームのホームパスまたは条件付きプラットフォーム固有のパス?

このコマンドは、プラットフォーム間で使用することができますしたい場合は、$(OS)条件でオプションを使用することができます '$(OS)' == 'Windows_NT'「$(OS) Windows_NT 『

ので、詳細ターゲットがあるべき '=!』:

<Target Name="PushPackageOnWindows" AfterTargets="Pack" Condition="'$(Configuration)'=='Debug' AND '$(OS)' == 'Windows_NT'"> 
    <Exec Command="nuget init $(ProjectDir)\bin\debug C:\nuget" /> 
    </Target> 

    <Target Name="PushPackageOnUbuntu" AfterTargets="Pack" Condition="'$(Configuration)'=='Debug' AND '$(OS)' != 'Windows_NT'"> 
    <Exec Command="nuget command on Ubuntu" /> 
    </Target> 
0

は、私は上記の答えを受け入れたが、私は他の誰かがこの同じケースに出くわした場合、最終的なソリューションを提供したかったです。 .deb nugetパッケージは古くなっていて、dotnet nuget cliコマンドがスーパーウォーターダウンしていたので、最新のウィンドウnuget.exeをダウンロードしてインストールしました。 2つの別々のターゲットブロックとして実行したときに実行されていなかったので、私はそう使いました:

関連する問題