11

Bir Visual Studio Proje Şablonu oluşturuyorum ve bunu bir VS Uzantısının içine yerleştiriyorum. ~ 20 NuGet paketlerini referans almak için Şablondan oluşturulan Projelere ihtiyacım var.NuGet referanslarını çevrimiçi beslemeden çeken bir Visual Studio Projesi Şablonu Oluşturun

Referanslar, VSIX içindeki tüm referansları içermek yerine nuget.org'dan çözümlenebildi mi?

NuGet documentation on Visual Studio Templates VSIX içindeki paketleri ekleme hakkında talimatlar verilmektedir, ancak diskte yerel olarak saklanabilir dosyası gerektirir ve .nupkg vsix içindeki paketler geçerli:

özel uzantısı olarak nupkg dosya ekleme source.extension.vsixmanifest dosyanızdaki içerik. Eğer 2.0 şema kullanıyorsanız bu gibi görünmelidir:

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

Soru zaten

Ben benzer bir soru (Creating a Visual Studio Project Template that already includes a Nuget Package Reference?) istendi biliyor sorular ve yanıtlar (mümkün değildir), ancak bu 2011'de sorulmuştur.

5 yıl sonra hala mümkün değil mi?

+0

Şu anda iki şablon yapıyorum. Biri NPM kullanıyor ve bir tanesi NuGet kullanıyor. NuGet biri çok daha zor ... Bunu paketleyebilirim ve sadece NPM tabanlı biriyle başa çıkmaya çalışabilirim. – Vaccano

+0

Neden 20 paketin NuGet yüklemesini komut dosyası yapmıyor ve bunu bir Readme.Txt dosyasına yapıştırmıyorsunuz? –

+0

@GerardoGrignoli - hackish hissediyor. Artı, bunu anlayamayan veya çalışmak için fazladan bir adım alamayan problemler olacaktır. – Vaccano

cevap

1

Evet, bir nuget paketi oluşturabilir ve diğer paketleri bağımlılıkları olarak ekleyebilirsiniz. Daha sonra bu paketi indirdiğinizde, tüm bağımlılıklarını alır ve projenize eklersiniz./Yükleme çevrimiçi Repo paketleri yükseltme için hiçbir Dahili işlevselliği hala olmadığından

+0

Bir NuGet paketi değil, görsel stüdyo projesi şablonu oluşturmak istiyorum. – Vaccano

+0

Evet, anladım, şablonu oluşturup yeni oluşturduğunuz paketi o şablona eklersiniz. –

+0

Üzgünüz, sorununuz, oluşturulan şablona bir nuget paketi ekleyemezsiniz. Benim hatam. Öğrenmeye çalışmama izin ver. –

6

, burada küçük bir geçici çözüm wich yardımcı olabilecek geçerli:

Önkoşullar

Birincisi, NuGet.VisualStudio Nuget yüklemek projenize paketleyin. yüklü here

itibaren, paket otomatik Gerçek için Göm Interop'un çeşitler montaj referans özelliğini ayarlayın edeceğini olsun. Bunun nedeni, kullanıcılar NuGet'in daha yeni sürümlerine güncellendiğinde kodunuzun sürüm değişikliklerine karşı esnek olmasını sağlamaktır.

Aynı nedenden dolayı, kodunuzdaki yukarıdaki arabirimler dışında başka türde de NOT kullanmalısınız. NuGet.Core.dll de dahil olmak üzere herhangi bir diğer NuGet derlemeleri, başvurmanız gerekir.

Tüm bunları kurduktan sonra, RunFinished kullanılan yöntem içinde aşağıdakileri yapabilirsiniz: örnek Bir paket yüklemek nasıl Newtonsoft.Json dayalı gösterir

O

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); 
} 

Not. Elbette, yüklemeyi hedefleyen projeleri seçebilirsiniz. Ayrıca yüklenecek sürümü de belirleyebilirsiniz.

Biraz rahatsız edici görünüyor ama maalesef başka bir yolu yok.

usings

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

Eğer yardımcı olur bana bildirin!