Soru Visual Studio 2015 - Paylaşılan Projeler Referans Sekmesi Web Projesinde Eksik


Visual Studio 2015'e MSDN aboneliğimizi yükselttim, çünkü Paylaşılan Projeler hakkında okumak beni çok heyecanlandırdı ... Yapmak istediğimiz zaman 21382 nuget paketini bağımlılıklarımızla yönetmemiz gerekmez.

Bu yüzden, içinde bir kod bulunan bir test paylaşılan proje oluşturdum. Sonra projeye .Net 4.6'da yeni bir boş web uygulaması ekliyorum. Artık referanslara gitmeyi ve referanslar penceresinde "Paylaşılan Projeler" sekmesini görmeyi bekledim, ancak bir tane göremiyorum.

Şimdi aynı çözüme bir sınıf kütüphanesi ekleyebilirim ve sekmeyi görüyorum ve paylaşılan referansı ekleyebilirim. Ancak paylaşılan projeyi web uygulamasına ekleyemiyorum.

Bu konsepti birden çok MVC projesiyle paylaşmak için kullanabileceğimi umuyordum.

Burada bir şey eksik mi veya Web Projeleri ile uyumlu olmayan projeler paylaşılıyor mu?

Bu konuda görebildiğim tek yol, inşa ettiğim her web uygulaması için iki projeye sahip olmak. Kod için 1 ve içerik için 1.

Örneğin

XYZ.SomeWebSite.Code (Class Library Project Type) -> references Shared Project
XYZ.SomeWebSite (Web Project Type)

Ancak bu rotaya giderken, web uygulamasına görünümleri, metin dosyalarını, css dosyalarını, javascript dosyalarını vb.


22
2017-08-03 19:43


Menşei


Ben bu konuda bir kaşlarını ayrıntılarla gönderdim ... Umarım bu bir abartıdır ... Paylaşılan Projeler ve Protable Sınıf Kütüphaneleri özellikle Windows Mağazası Uygulamaları ve Windows Phone 8 için ... - Ryan Mann
Sadece bir RTM Sürüm notu buldum: visualstudio.com/en-us/news/vs2015-vs.aspx  Web Proje türü desteklendiği şekilde listelenmez, ancak sürümde hiçbir şey bulamayan RTM'den kaynaklanır. - Ryan Mann
Geçen hafta aynı şeyi gördüm. Sinir bozucu. Üç web portalı uygulamasına sahibiz ve varlıklarımızı (css, resimler, temalar, yazı tipleri) merkezileştirmek istiyoruz. Paylaşılan projeler sorunu çözmek için harika bir yol gibi görünüyordu ama referans eklemeye çalıştığınızda yaptığınız aynı şeyi gördü. <üzgün trombon> - Craig W.
Geçtiğimiz günlerde, paylaşılan projeleri kullanmanın, IIS Web Siteleri için kötü olduğunu düşündüğüm bir üretim ortamında bir sorunla karşılaştım ve belki de bu yüzden orada değil. Bir uygulama havuzunda 2 siteyi hızlandırmam gerektiği söylendi ve kodum her iki sitede de paylaşılan projeler aracılığıyla derlendiği için havaya uçtu. İkisi de aynı uygulama havuzuna yüklenemediler çünkü tüm tipler iki kez var olacaktı ... Onları 2 ayrı uygulama havuzunu çalıştırmaya ikna edebildim, ama neden hala kötü olabileceğine dair bir ampul anıydı. - Ryan Mann
İlgili özellik isteği - developercommunity.visualstudio.com/content/problem/12592/... - resnyanskiy


Cevaplar:


[Geçici Cevap]

Web uygulaması için csproj dosyasını elle düzenleyerek problemin etrafında çalışabildim.

İşte adımlar:

  1. Web uygulaması projesini kaldır
  2. Projeyi sağ tıklayıp düzenle ... seçeneğini tıklayarak * .csproj dosyasını düzenleyin.
  3. Şimdi ProjectTypeGuids öğesini bulun.

    {349C5851-65DF-11DA-9384-00065B846F21}; {fae04ec0-301f-11d3-bf4b-00c04f79efbc}

İlk kılavuz, bir ASP.Net MVC 5 Projesi için kılavuzdur ve 2. kılavuz C # içindir.

Tek yapmanız gereken, ilk cümleyi ve noktalı virgülü geçici olarak kaldırmak, sadece c # guid (ikinci) bırakarak.

Projeyi yeniden yükleyin ve paylaşılan projelerinizi ekleyin. Hepsi eklendikten sonra, proje dosyasını düzenleyin ve ilk rehberi ve noktalı virgülü geri koyun.

Projeyi tekrar yükle.

Paylaşılan Proje referansı hala orada olacak ve web uygulamanıza inşa edecek ve bağlantı kuracaktır.

İsteğe bağlı olarak, yalnızca paylaşılan proje başvurusunu manuel olarak ekleyebilirsiniz, biçim şuna benzer

<Import Project="..\XYZ.UPlugin\XYZ.Plugin.projitems" Label="Shared" />

40
2017-08-03 21:01



Güncelleştirme: Sınama üzerine, paylaşılan bir projede Varlıklar klasörü oluşturursanız, hedef projelerdeki fiziksel disk alanında bulunmaz. Ancak sitenizi yayınlarsanız, yayınlama hedefinde bulunur. Bu nedenle, yayınlamadan yerel olarak test etmek isterseniz, iis'te sanal bir dizini, paylaşılan projenizdeki varlıklar klasörüne eşlemeniz gerekir. - Ryan Mann
Kullanmakta olduğum iyi bir model, paylaşılan projenizin kök ad alanını sadece root olarak değiştirmektir. Örneğin, "XYZ.Something" yerine "XYZ" kullanın ve sonra da bir şey denilen bir klasör oluşturun. Kodunuzu buraya koyun ve "XYZ.Something" ad alanı için varsayılan olarak kodunuzu kök düzeyindeki varlıklarınızdan, varlık / css / js klasörlerinizden vb. Ayrı tutar. - Ryan Mann
Bunu bir sınıf kütüphanesine dönüştürür, referansınızı eklersiniz, ardından kılavuzu geri koyun ve daha önce olduğu gibi geri döner. Bunu yapmak için uygun bir yol yoktur, desteklenmez. İşte bu yüzden bu cevap, bunun için uygun bir yol olana kadar Geçici olduğunu söylüyor. - Ryan Mann
Her ne kadar diyor ki dikkat <Import Project=... /> uzantı proje dosya uzantısı değil .shproj ama dosya .projitems. Sonuncu dosya proje dosyasıyla aynı dizinde. - Manfred
Ayrıca dikkate değer: proje başvurusunu el ile eklemek, Visual Studio 2017 15.6.3 sürümü ve ayrıca yeni csproj dosya biçimi için de çalışır (<Project Sdk = "Microsoft.NET.Sdk.Web">). VS 2017 ver 15.6.3'te paylaşılan bir proje oluşturmak için, şablon ağacının kökündeki "Paylaşılan Proje" adlı şablonu kullanın. - Manfred