11

私はVisual Studioプロジェクトテンプレートを作成し、VSエクステンションの内部にバンドルしています。 〜20個のNuGetパッケージを参照するためにテンプレートから作成されたプロジェクトが必要です。オンラインフィードからNuGetリファレンスを取得するVisual Studioプロジェクトテンプレートを作成します。

VSIX内のすべての参照を含めるのではなく、nuget.orgから参照を解決することは可能ですか?

NuGet documentation on Visual Studio TemplatesはVSIX内のパッケージを追加する方法について説明していますが、それは、ディスク上にローカルに保存されたファイルを必要とし、.nupkgはVSIX内のバンドルです:

をカスタム拡張としてあなたnupkgのファイルを追加します。 source.extension.vsixmanifestファイルの内容。あなたは2.0スキーマを使用している場合、それは次のようになります。

<Asset Type="Moq.4.0.10827.nupkg" d:Source="File" 
    Path="Packages\Moq.4.0.10827.nupkg" d:VsixSubPath="Packages" /> 

質問はすでに、私は同様の質問が可能ではない(尋ねた(Creating a Visual Studio Project Template that already includes a Nuget Package Reference?)と答えた知っ

を尋ねました)、これは2011年に尋ねられました。

5年後、まだできませんか?

+0

私は今、2つのテンプレートを行っています。 1つはNPMを使用し、1つはNuGetを使用します。 NuGetの方がはるかに難しいです...私はそれを袋に入れて、NPMベースのものだけでやってみようと思います。 – Vaccano

+0

20パッケージのNuGetインストールをスクリプト化してReadme.Txtに貼り付けてみませんか? –

+0

@GerardoGrignoli - ハックを感じる。加えて、それを理解していない人や、余分な作業をすることに問題がある人もいます。 – Vaccano

答えて

1

はい、あなたはナゲットパッケージを作成して、それらの他のパッケージを依存関係として追加することができます。その後、そのパッケージをダウンロードすると、すべての依存関係が取得され、プロジェクトに追加されます。

+0

NuGetパッケージではなく、ビジュアルスタジオプロジェクトテンプレートを作成したいと考えています。 – Vaccano

+0

はい、私は、あなたがテンプレートを作成し、そのテンプレートに作成したばかりのパッケージを追加することを理解します。 –

+0

申し訳ありませんが、問題は、作成したテンプレートにナゲットパッケージを追加できないことです。私の間違い。私が見つけようとします。 –

6

組み込みの機能をオンラインレポからのアップグレード/パッケージをインストールするためには、まだ存在しないので、ここでは小型の回避策のウィッヒが役立つかもしれないです:

前提条件

まず、NuGet.VisualStudio nugetをインストールパッケージをプロジェクトに追加します。 がインストールhere

から、パッケージは自動的に埋め込み相互運用機能の種類にアセンブリ参照のプロパティを設定することを取得します。その理由は、ユーザーが新しいバージョンのNuGetに更新するときに、バージョンの変更に対してコードを復元できるようにするためです。

同じ理由で、NOTあなたのコードで上記のインターフェイス以外の他のタイプを使用する必要があります。 NuGet.Core.dllなど、他のNuGetアセンブリも参照してはいけません。あなたがパッケージをインストールすることができますどのようにNewtonsoft.Jsonに基づいて示し例

var componentModel = (IComponentModel) Package.GetGlobalService(typeof(SComponentModel)); 
IVsPackageInstallerServices installerServices = 
    componentModel.GetService<IVsPackageInstallerServices>(); 

if (!installerServices.IsPackageInstalled(project, "Newtonsoft.Json")) { 
    var installer = componentModel.GetService<IVsPackageInstaller>(); 
    installer.InstallPackage(
     "All", 
     project, 
     "Newtonsoft.Json", 
     (System.Version) null, 
     false); 
} 

:すべてのものを設定した後、あなたはあなたのRunFinished方法 - に次のように

を行うことができます。 インストール先のプロジェクトを選択することができます。また、インストールするバージョンを決定することもできます。

少し違和感があるようですが、残念ながら他の方法はありません。

Usings

using Microsoft.VisualStudio.ComponentModelHost; 
using Microsoft.VisualStudio.Shell; 
using NuGet.VisualStudio; 

ことができますなら、私を知ってみましょう!

関連する問題