2012-02-09 24 views
5

C# kod dolu bir .cs dosyam var Birden çok projede yeniden kullanmaya devam ediyorum.Birden çok projeden C# kodu için başvuru yapın

Şu anda, her proje dizinindeki kodu yeni bir dosyaya kopyalayıp yapıştırarak bu projelere ekliyorum. Bu, yanlış yoludur.

yolu nedir?

doğru yolu yapmalıdır:

  • bilgisayarım
  • üzerinde sadece bir yerde ortak kod tutmak ve taze bağ tutmak --- çok zaman ortak kod değişiklikleri, her proje bunun farkındadır Bir dahaki sefere bu projeyi yeniden derledim.

Rastgele tahmin etmek gerekirse, using mycode = C:\common\mycode.cs gibi bir yönerge beklerdim, ama eminim bunun bir şey yapmanın NET yolu değil.

(C# 2010 .NET 4.0 kullanarak ve sadece bir bilgisayarda yerel bu kodu derleme.)

cevap

6

Sınıf Kitaplığı oluşturun, dosyayı ekleyin, projeyi oluşturun ve derleme tarafından oluşturulan DLL'ye başvurun. Kullanılacak her dosyaya kullanma ifadesini ekleyin. Ayrıca hatalar ve DLL Projenizde ise siz ve sağdaki nesneye tıklayın -> Çözün ve sizin için kullanacağız.

+0

Tüm bunları yaptım, ancak şimdi Sınıf Kitaplığı'ndaki işlevlerden faydalanamıyorum. Bir çeşit kullanma yöntemine ihtiyacım var mı? – Joe

+0

@Joe Evet, başvuruyu projeye eklemeniz ve ardından kitaplıktaki bir sınıfa başvuran her dosyada kullanarak eklemeniz gerekir. Yani [Namespace] kullanarak en üstte. Ayrıca Visual Studio, DLL projede varsa sağ tıklatarak çözümleyebilirsiniz. –

+0

Ve ayrıca sınıfları .dll halkında yapmaya ihtiyacım var ... * facepalm * – Joe

8

diğer projelerde olduğu ayrı bir sınıf kitaplığı projesi ve referans içine kod yerleştirin.

6

Veya,

sağındaki aşağı ok düğmesini tıklayın başka bir projede .cs dosyasına Varolan madde Gözat'ı ve seçmek için tek bir tıklama ekleyin çözüm explorer Seç proje üzerinde sağ tıklayın Ekle ve Ekle olarak ekle Bağlantı oluştur

Artık iki proje tarafından başvurulan bir kaynak dosyanız var, ancak ilk projede verdiğiniz ad alanı, ideal olmayabilir.

Bunu organize etmenin en iyi yolu, diğer iki yanıtın da önerdiği gibi, ortak bir kodun bir sınıf kitaplığına yerleştirilmesini sağlamaktır, bu nedenle, SomeOtherProject yerine MyClassLibrary adlı bir ad alanı vardır. Windows Phone gibi küçük bir şey geliştirmek için gelene kadar çok fazla önemli olmayan kopyalanan bir dll kaydeder. Veya tüm uygulamalarınızda Me.Common olmak için ortak kodun ad alanını değiştirin; orijinalinin hangisi olduğu önemli değil, onu referans gösteren herhangi bir projeden düzenleyebilirsiniz.

Kaynak Denetimi'nin bir sorun olmadığını kontrol edin.

+0

"Bağlantı olarak ekle" nin hiçbir fikri yoktu, teşekkürler! 10 satırlık kodumu ayrı bir sınıf kütüphanesi projesine düzgün bir şekilde düzenlemem için daha az umursamadığım küçük test projeleri için kullanışlıdır. – Dan

0

Çok fazla kodu yeniden kullanan ve biraz değiştirebileceğiniz projeler için bir kodun bir bağlantı olarak otomatikleştirilmesini otomatikleştiren bir uygulama yazdım. https://github.com/CADbloke/CodeLinker

veya

dosyaları XML .Csproj düzenlemek için korkmayın de öyle. Mesela bu işler ...
<Compile Include="$(Codez)\z.Libraries\diff-match-patch\DiffMatchPatch\**\*.cs" 
Exclude="NotThisOne.cs;**\NotThisFolderWith\This*.cs"> 
<Link>Libs\%(RecursiveDir)%(Filename)%(Extension)</Link> 
</Compile> 

... ve size hedef projesinde bağlantılı dosyalar olarak tüm C# kaynak klasörden dosya ve alt klasörleri, verecektir.

  • $(Codez) PC'lerde kullanabileceğiniz bir Windows Ortam Değişkeni'dir.
  • *.cs yerine *.* da kullanmış olabilirim.
  • Bu, Visual Studio'nun size zarar verebileceği şeylerden biridir; joker karta bağlı dosyaların bulunduğu klasöre bir dosya eklenmesi, girdileri ayırmak için onları dağıtabilir. Ya da değil. Rüzgara bağlı.