3

Nuget.exe は、ファイル システム/構成レベルでのパッケージの管理のみをサポートします。powershell コマンドは、.proj ファイルを更新する魔法を命令します。

そうは言っても、Visual Studio (自動) の外部で最新バージョンの NuGet パッケージを使用して csproj ファイルを更新する機能が必要です。

基本的に、自分の外部 PowerShell スクリプト内で Install-Package (またはその他の方法) を使用するにはどうすればよいですか?

アップデート:

次の理由により、VS の外部にプロジェクト参照を追加できるようにしたいと考えています。

私の会社には、場合によっては相互に依存する多くの共有ライブラリがあります。TFS Nugetter を使用して、TFS から nuget パッケージをビルドおよび公開しています。プロジェクトがすべての新しいバージョンでビルドおよび実行できない限り、開発者がビルド (パッケージ) をキューに入れないようにしたいと考えています。これにより、ライブラリのすべての新しいバージョンが、その依存関係のすべての新しいバージョンで動作することが保証されます。ビルドが失敗した場合は、VS でナゲット参照を更新し、コンパイラ エラー/単体テストを修正する必要があります。

私はNuGetソースを見てきましたが、NuGetソースを再利用してVSの外部でprojファイルを変更する簡単な方法を見つけたと思います(ちょっと)。

System.Type t = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0", true);
var dte = (DTE)System.Activator.CreateInstance(t, true); 
dte.Solution.Open( 
    @"C:\Users\paul.knopf\Documents\Visual Studio 2010\Projects\SLNMemory\SLNMemory.sln");

基本的に、Visual Studio のメモリ内バージョンを開き、nuget コマンドを実行してから保存します。

ビルド ステップでは、GetWorkspace の後、このインメモリを実行して、すべての nuget 参照を最新バージョンに更新したいと考えています。

どう思いますか?それは間違いなく遅くなりますが、同じコード ベースにあり、必要なすべての機能を備えています。

4

1 に答える 1

1

あなたが説明したようにVisual Studioを自動化することは確かに可能です。

私が調べた別の方法は、SharpDevelop を使用してVisual Studio の外部に NuGet パッケージをインストールすることでした。NuGet PowerShell コマンドレットは、ソリューションを受け入れるように変更され、NuGet パッケージでの PowerShell スクリプトの使用を含め、コマンド ラインからインストールを自動化できました。コードは更新されていないため、古いバージョンの NuGet を対象としていますが、更新される可能性があります。繰り返しますが、これはあなたのソリューションとかなり重いソリューションに似ています。

于 2012-07-09T14:23:32.000 に答える