Visual Studio 2015'te Paylaşılan Proje ve Sınıf Kütüphanesi arasındaki fark nedir?


240

Visual Studio 2015'in yeni özelliklerine bakıyordum ve Paylaşılan Proje çok ortaya çıktı, ancak Sınıf Kütüphanesi veya Taşınabilir Sınıf Kütüphanesi kullanmanın ne kadar farklı olduğunu anlamıyorum. Birisi açıklayabilir mi?

Düzenleme: Paylaşılan Proje, Visual Studio 2015'teki yeni bir özelliktir ve Taşınabilir Sınıf Kitaplığı'ndan farklıdır. Taşınabilir Sınıf Kütüphanesi'nin ne olduğunu anlıyorum. Anlamaya çalıştığım şey, Paylaşılan bir Projenin Sınıf Kütüphanesine göre nasıl farklı olduğu. Aşağıdaki bağlantıya bakın.

http://www.c-sharpcorner.com/UploadFile/7ca517/shared-project-an-impressive-features-of-visual-studio-201/


Yanıtlar:


238

Paylaşılan bir proje ile sınıf kütüphanesi arasındaki fark, ikincisinin derlenmesi ve yeniden kullanım biriminin montaj olmasıdır.

Birincisi ile birlikte, yeniden kullanım birimi kaynak kodudur ve paylaşılan kod, paylaşılan projeye referans veren her bir derleme içine dahil edilmiştir.

Bu, belirli platformları hedefleyen ancak yine de paylaşılması gereken koda sahip ayrı montajlar oluşturmak istediğinizde yararlı olabilir .

Ayrıca buraya bakınız :

Paylaşılan proje başvurusu, Çözüm Gezgini'ndeki Başvurular düğümü altında görünür, ancak paylaşılan projedeki kod ve öğelere, ana projeye bağlı dosyalarmış gibi davranılır.


Visual Studio 1'in önceki sürümlerinde, Ekle -> Mevcut Öğe'yi seçip Bağlan'ı seçerek kaynak kodunu projeler arasında paylaşabilirsiniz. Ancak bu biraz karmaşıktı ve her ayrı kaynak dosyasının ayrı ayrı seçilmesi gerekiyordu. Birden fazla farklı platformu (iOS, Android vb.) Desteklemeye geçişle, Paylaşılan Projeler kavramını ekleyerek kaynakları projeler arasında paylaşmayı kolaylaştırmaya karar verdiler.


1 Bu soru ve cevabım (şimdiye kadar) Paylaşılan Projelerin Visual Studio 2015'te yeni bir özellik olduğunu gösteriyor. Aslında, çıkışlarını Visual Studio 2013 Güncelleştirme 2'de yaptılar.


1
Aynı paylaşılan projeye referansta bulunan iki proje diyelim. Bunlardan biri diğerine referans eklerse, yinelenen tür bildirim hataları mı alıyorsunuz?
Asad Saeeduddin

3
@Asad - Kontrol etmedim, ama beklemiyordum. Aynı adlara sahip olan ve aynı ad alanlarında bildirilen ancak farklı montajlarda bulunan iki farklı türünüz olabilir. Bu kendi başına bir hata değildir.
Damien_The_Unbeliever

2017'de OP ile aynı soruyu sordum ama şimdi .net standart 2.0'ım var. Paylaşılan projeler artık kullanılmıyor mu? Bugün yepyeni bir webapp veya uwp uygulaması oluşturmak ister misiniz?
JP Hellemons

1
@JPHellemons - .net standardı iyidir - ancak herhangi bir nedenle bunun dışına çıkmanız gerekiyorsa (örneğin, yalnızca belirli platformlarda kullanılabilirlik varsa ), Paylaşılan bir Proje yine de iyi bir yaklaşım olabilir.
Damien_The_Unbeliever

1
Paylaşılan bir proje ile Javascript dosyalarını paylaşabileceğimizi söylüyoruz. Bunu bir bundleConfig dosyasında nasıl kullanırız?
Leth

34

Bu blogdan biraz daha bilgi buldum .

  • Sınıf Kitaplığı'nda, kod derlendiğinde, her kitaplık için derlemeler (dll) oluşturulur. Ancak Paylaşılan Proje ile herhangi bir başlık bilgisi içermez, bu nedenle Paylaşılan Proje referansınız olduğunda üst uygulamanın bir parçası olarak derlenir. Oluşturulan ayrı dlls olmayacak.
  • Paylaşılan proje C # kod dosyaları, XAML dosyaları veya JavaScript dosyaları vb. Gibi herhangi bir şeye sahip olabilirken, sınıf kütüphanesinde sadece C # kodu yazmanıza izin verilir.

7
sınıf kütüphanesinde de .xaml olabilir (Kullanıcı Kontrolleri)
Varsayılan

21

Kısa Farklar

1) PCL'nin SharedProject gibi .NET Framework'e Tam Erişimi olmayacaktır.

2) Platforma özel kod için #ifdef - PCL'de yazamazsınız ( #ifdef seçeneği bir PCL'de sizin için mevcut değildir, çünkü kendi DLL'i olarak ayrı ayrı derlenmiştir, bu nedenle derleme zamanında (#ifdef değerlendirildiğinde) hangi platformun parçası olacağını bilmiyor. ) Paylaşılan proje olarak nerede yapabilirsiniz.

3) Platforma özel kod PCL'de Inversion Of Control kullanılarak elde edilir.

PCL ile Paylaşılan Proje arasındaki farkları gösteren mükemmel bir makale aşağıdaki bağlantıda bulunabilir

http://hotkrossbits.com/2015/05/03/xamarin-forms-pcl-vs-shared-project/


18

Diğerleri gibi daha önce yazmışlar gibi, kısaca:


kod (dosya) düzeyinde paylaşılan proje yeniden kullanımı, klasör yapısına ve kaynaklara da izin verir


montaj seviyesinde pcl yeniden kullanımı

Benim için burada cevaplarda çoğunlukla eksik olan şey, bir PCL'de mevcut işlevselliğin azaltılması hakkında bilgi: örnek olarak sınırlı dosya işlemleriniz var (Xamarin çapraz platform projesinde çok fazla File.IO işlevselliği yoktu).

Daha ayrıntılı olarak
paylaşılan proje :
+ Birden fazla platformu hedeflerken #if kullanabilir (örn. Xamarin iOS, Android, WinPhone)
+ Her hedef proje için mevcut olan tüm çerçeve işlevleri (şartlı olarak derlenmelidir)
o Derleme zamanında entegre olur
- Biraz daha büyük boyut derleme listesi
- Visual Studio 2013 Güncelleştirme 2 veya üstü gerekir

pcl :
+ paylaşılan bir derleme oluşturur
+ Visual Studio'nun eski sürümleriyle kullanılabilir (2013 Öncesi Güncelleme 2)
o dinamik olarak bağlı
- izin verilen işlevsellik (başvurduğu tüm projelerin alt kümesi)

Seçeneğiniz varsa, paylaşılan projeye gitmenizi tavsiye ederim, genellikle daha esnek ve daha güçlüdür. Gereksinimlerinizi önceden biliyorsanız ve bir PCL bunları karşılayabilirse, bu rotaya da gidebilirsiniz. PCL ayrıca platforma özgü kod yazmanıza izin vermeyerek daha net bir ayırma sağlar (bu, ilk etapta paylaşılan bir montaja koymak için iyi bir seçim olmayabilir).

Her ikisinin de ana odak noktası, birden çok platformu hedeflediğinizde, normalde sadece sıradan bir kütüphane / dll projesi kullanırsınız.


9

VS 2015 kitabından kısa bir süre sonra

Paylaşılan Projeler, kod, varlıklar ve kaynakları birden çok proje türünde paylaşmaya izin verir. Daha spesifik olarak, aşağıdaki proje türleri paylaşılan projelere başvurabilir ve tüketebilir:

  • Konsol, Windows Formları ve Windows Presentation Foundation.
  • Windows Store 8.1 uygulamaları ve Windows Phone 8.1 uygulamaları.
  • Windows Phone 8.0 / 8.1 Silverlight uygulamaları.
  • Taşınabilir Sınıf Kütüphaneleri.

Not: - Hem paylaşılan projeler hem de taşınabilir sınıf kitaplıkları (PCL) kod, XAML kaynakları ve varlıkları paylaşmaya izin verir, ancak elbette aşağıdaki gibi özetlenebilecek bazı farklılıklar vardır.

  • Paylaşılan bir proje yeniden kullanılabilir bir montaj üretmez, bu nedenle sadece çözümün içinden tüketilebilir.
  • Paylaşılan bir proje, platforma özgü kod için desteğe sahiptir, çünkü kodunuzun hangi platformda çalıştığını tespit etmek için kullanabileceğiniz WINDOWS_PHONE_APP ve WINDOWS_APP gibi ortam değişkenlerini destekler.
  • Son olarak, paylaşılan projeler üçüncü taraf kütüphanelerine bağımlı olamaz.
  • Buna karşılık, PCL yeniden kullanılabilir bir .dll kitaplığı üretir ve üçüncü taraf kitaplıklarına bağımlı olabilir, ancak platform ortamı değişkenlerini desteklemez

7

Sınıf kitaplığı derlenmiş kod paylaşılır.

Paylaşılan proje paylaşılan kaynak kodudur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.