2014-04-18 19 views
21

Nuget kullanan bir Visual Studio 2013 projem var. Kurmak istediğimiz Nuget paketlerini tanımlayarak, çözümün kök dizininde bir packages.config dosyası var. Ayrıca, paketin bazı kaynaklarının yanı sıra bazı paketSourceCredentials tanımlayan, çözümün kök dizininde bir nuget.config dosyası var. Paket kaynaklarından biri şirketimiz için özel bir repo.Visual Studio 2013 ignes nuget.config

Ben çözümün kök dizininde bir komut istemi açın, ve iyi çalışıyor ve biz kullanan özel paketlerinden bazı çekmek için bizim özel repo vurmak yapabiliyor nuget restore yazarsanız.

Ancak, Visual Studio 2013'te çözümü açıp onu oluşturursam, özel paketlerimizi indirmeye çalışırken başarısız olur, çünkü nuget.config dosyamızı görmezden geldiğinden ve bu nedenle özel nuget repo'mız hakkında bilgi sahibi olmaz. .

Araçlar> Seçenekler'e girebilir ve özel repo'yu ekleyebilirim, ancak çözümün içinde her şeyi yapmaya çalışıyoruz, böylece özel bir yapılandırma gerektirmeden kutunun dışında kalıyor.

nuget.config neden VS 2013 tarafından göz ardı ediliyor?

+3

Nuget'in NuGet.config dosyalarını şu sırayla aradığını zaten biliyorsunuzdur: 1. .nuget \ nuget.config 2. Bu proje klasöründen tekrarlı olarak köprüye doğru yürüyor. 3.% appdata% \ NuGet \ nuget.config adresinde olması beklenen global NuGet.config öğesinin sonuncusu, makinenizin (kullanıcı başına) dosyası olan Users \ {kullanıcı-adı} \ dolaşımdır ve Visual Studio'dayken etkilenen dosya budur, Araçlar> Seçenekler'e gidin ve özel repo'unuzu ekleyin. Böylece, PowerShell veya herhangi bir şekilde ona erişebilirsiniz. – JamesWHurst

+0

@JamesWHurst Visual Studio'nun projemdeki nuget.config bilgilerini hiçbir zaman onaylamayacağını ve bunun yerine bunun yerine repo eklemek için global nuget.config dosyasını değiştirmek için PowerShell kullanmam gerektiğini mi söylüyorsunuz? –

+0

nuget.config öğenizi .nuget (bu nedenle .nuget \ nuget.config) adlı bir alt klasöre çözümle aynı klasörden taşırsanız çalışır mı? –

cevap

3

Aşağıdaki dizin yapısına sahip yeni bir proje oluşturdum.

-ConsoleApplication1 
    -ConsoleApplication1 
    -ConsoleApplication1.sln 
    -nuget.config 

Çözüm özellik için Nuget Paketleri Yönetin kullanırken benim özel repo herhangi göremiyordu nuget.config ekleyerek önce. nuget.config dosyasını eklediğimde, iletişim penceresindeki yeni reposlarımı görebildim. Ben de geri Nuget kullanarak Paketlerimde geri mümkün duyuyorum ve bir yapı elde VS içinde 2013

Benim nuget.config Bence tek şey olduğunu da tarif sorununa dayanarak bu

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <packageRestore> 
     <add key="enabled" value="True" /> 
     <add key="automatic" value="True" /> 
    </packageRestore> 
    <packageSources> 
     <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> 
     <add key="MyRepo" value="http://XX.XX.XXX.XX:81/host/repo" /> 
    </packageSources> 
    <activePackageSource> 
     <add key="All" value="(Aggregate source)" /> 
    </activePackageSource> 
</configuration> 

benziyor Daha önce paketleri geri yükleme yöntemini kullanmadan önce projenizden Nuget Paketi Geri Yükleme'yi devre dışı bırakmayı denemiş olabilirsiniz. Eğer her projeden aynı anda bomba paketini geri yüklemezseniz, yeni yönteme müdahale edebilecek bazı mantıkların üzerine çıkılabilir. Örneğin, .nuget klasörünü çözümünüzden sildiyseniz, nuget.config dosyası yine de orada çakışmalara neden olabilir.

+0

Geçerli çözüm dizininizin "üstünde" ise, nuget.config dosyasını VS 2013'te nasıl yönetirsiniz? Dizin yapınızda nuget.config dosyanızın nerede olduğu, .sln ve .csproj dosyalarının nerede olduğu konusunda ayrıntılı olarak detaylandırır mısınız? Çözüm Gezgini görünümünüz neye benziyor, nuget.config dosyasını görebiliyor musunuz? –

+0

Bu mantıklı değil. Neden nuget.config dosyasını çözüm dizininin üzerine yerleştirmeliyiz ki, mantıksal olarak tüm çözümlere uygulanacaktır. Bu doğru olamaz ... – crush

+0

Çözümün üstüne yerleştirmek tamamen mantıklı olduğuna inanıyorum. Ana çözüm dosyamızı bagajımızın kökünde bulundurduk ve düzenli NuGet.config'imiz var. Bununla birlikte, dev'lerimizin kendi çözümlerine sahip olduğu ayrı bir/Devs/UserXxx klasör yapısına sahibiz. Sorun, bu çözümlerin paket konumlarına uymadığıdır. Ayrıca, çözümümüz kendi paketleri klasörüne sahip olması gereken tamamen farklı bir repodan projeler kullanıyor. Ancak, NuGet iki paket konumuna tek bir çözümden izin vermiyor, bu yüzden her şey için ortak bir 'paket' konumu oluşturmamız gerekiyor. – MarqueIV

0

Çözüm Web Sitesi projesi veya Web Uygulaması projeniz kapsamında mı? Web sitesi projesinin nuget.config dosyasını yok saydığını düşünüyorum.

18

NuGet.config dosyasını düzenledikten sonra Visual Studio'yu yeniden başlatın!

VS2012'nin, yeniden başlatıldıktan sonraya kadar NuGet.config'deki değişiklikleri aldığını fark ettim.

+0

Bu projenin 2015 projemde de olduğuna inanıyorum. Bir noktada yeniden başlatıldığımı düşündüm ve hala kayıt olmadı, ancak çalışmaya başladıktan sonra bazı testler yaptım ve VS'yi yeniden başlattığım sürece her şey beklendiği gibi çalışıyordu. – JoeBrockhaus

1

Çok projeli bir çözümünüz varsa, çözüm klasöründeki tüm klasörlerdeki projelerle NuGet.config dosyasını bir proje klasörüne yerleştirmenin işe yaramadığını tespit ettim. Özel paket kaynağını almıyor. Çözüm klasörüne bir NuGet.config yerleştirirseniz, çalışır.olduğu

, bu yapar değil eser:

  • Çözüm
    • ProjectA
      • ProjectA.csproj
    • ProjectB
      • ProjectB.csproj
      • NuGet.config

bu yapar iken eser:

  • Çözüm
    • ProjectA
      • Ayrıca inci bulunan

    ProjectA.csproj

  • ProjectB
    • ProjectB.csproj
  • NuGet.config disableSourceControlIntegration seçeneğinde \NuGet.config belirtildiğinde çalışmaz. Sadece .nuget\NuGet.config'da çalışır. Bu yüzden, çözüm kaynağım için iki adet konfigürasyon dosyası, paket kaynak konfigürasyonunu tutan bir root ve seçeneği ile .nuget klasöründe bir tane var.

    Visual Studio 2012 Güncelleştirmesi 5 ve NuGet Paket Yöneticisi uzantısı 2.8.5 ile test edilmiştir.

  • İlgili konular