2015-08-24 8 views
19

Sadece System.Collections.Immutable için (eski) Microsoft.Bcl.Immutable Nuget paketinden açık ve projeme tüm bu yeni paket bağımlılıkları bulmak için sürpriz oldu: Bunlar Nuget paketinin bağımlılıkları olarak listelenenTüm System.Collections.Immutable bağımlılıkları içermeli miyim?

System.Collections 
System.Diagnostics.Debug 
System.Globalization 
System.Linq 
System.Resources.ResourceManager 
System.Runtime 
System.Runtime.Extensions 
System.Threading 

, bu yüzden bir var orada olmak hakkı, ancak onlar zaten benim PC ve hedef ortam (Azure btw) zaten çerçeve ile birlikte gelir.

Zaten Projemdeki paketlerin çok sayıda olması ve mümkünse (ve kendimi ayak çekim olmadan), bu 8 paketlerinin yol açtığı ek yükü önlemek istiyoruz.

bu bağımlılıkları kaldırmak için güvenli mi?
şimdi onların yüklü sürümlerinden farklı olabilir ve benim projenin bazı kısmı şimdi yanlış olanları kullanabilir çünkü benim proje boyunca bu paketleri kullanmak zorunda mıyım? (Nedeniyle bazı DLL bağlama deliliğe?)

Düzenleme: önce yorum vardı Sadece şeyiyle olarak: bağımlılıkları gerçek paketleri (değil ad) ve sahip indirilecek, ben hedeflemesi ve ile derleme .NET 4.6, VS2015'te çalışıyor. Bir şeyin modası geçmiş olmasına ve paketlerin normal olarak yüklenmesi gerekmez olmasına rağmen tamamen mümkün mü?

+0

@Jodrell NET v4.6, sadece v4.5.2 her şeyi göç ve bu süreçte eski Bcl.Immutable paketi fark etti. – enzi

+0

4.6'dan beri tüm paketlerin 4.0.0 veya sonraki sürümlerinde gönderilmesinden dolayı bağımlılıkları atlayabileceğinizi tahmin ediyorum. Denemedim bu yüzden cevap vermeyi nitelikli hissetme. – Jodrell

+0

Zaten başvuruda bulunuluyorsa, referanslarınızın NuGet olanlardan daha yeni olduğunu kontrol edin, ardından ek referansları kaldırabilir ve bir montaj yönlendirmesini web.config dosyasına koyabilirsiniz, böylece sistem burada açıklanan daha yeni sürümü yükler: https: // msdn.microsoft.com/en-us/library/7wd6ex19%28v=vs.110%29.aspx#BKMK_Specifyingassemblybindinginconfigurationfiles – Lukos

cevap

18

Sadece mutlu olmak için Nuget paketinin bir lot numarasını tutması gereken bir yan etkisi görüyorsunuz. Paket muazzam sayıda hedefi destekliyor, geç olarak hızla çoğalıyor. Ben iOS ve Android ve .NETCore (Silverlight) için OSX ve iOS için Xamarin, Windows Phone 8.0 ve 8.1, Windows Store, CoreCLR (açık kaynak projesi), .NET 4.5, MonoTouch için destek görüyoruz.

Bu bağımlı paketler, normal olarak c: \ program files x86 \ reference assemblies dizinine yüklenmiş olan başvuru derlemeleri içerir. Nuget paketi, böyle bir referans meclisin eksik olabileceği ve tüm kit ve kabileyi içerme şansına sahip değildir.

Tümü yüklendikten sonra, paket yükleyici çalışır ve projenize gerçekte gereksinimine sahip olduğunuz referansları ekler. Ne olduğunu görmek kolay, projenizin Referanslar düğümünü açmanız yeterli. senin .NET 4.5 ve üstü masaüstü sürümünü hedeflenen ise katma referansların genel toplam sadece bir, System.Collections.Immutable olduğunu. Evet, bunları kaldırabilirsiniz.

+0

Gerçekten de, "Immutable" dışındaki referanslar eklenmedi. Ancak benim öncelikli sorun paketlerin kendileriydi - şimdi '' package.config '' içinde bulunanlar ve her ne zaman paket dizini temizlediğimde indirilecekler (ki bu çok sık olmamasına rağmen veriliyor, ama yine de) Onu kaldırmak istiyorum). Yani, Hans'ı açıklığa kavuşturabilir misiniz: "onları kaldırabilirsin" derken, referansları mı yoksa paketleri.config'deki paketleri mi kullanıyorsun? – enzi

+0

packages.config ve alt dizinlerdeki girdiler. –

+0

Project.json ile işler daha da güzelleşiyor ... bağımlılıkların bağımlılıkları artık dosyaya gitmiyor. – gregjhogan