Nasıl görsel stüdyo çoklu proje çözümleri ile çıkış dizinine kopyalayın ne belirler?

oy
26

en aşağıdaki yapıya sahip bir çözüm var diyelim:

  • Project.DAL - Veri erişim katmanı, bir alt düzey kütüphanesine bağlıdır, örneğin Oracle.DataAccess w / = true yerel kopya
  • Project.BLL - İş mantığı katmanı, proje olarak Project.DAL başvuran
  • Project.UI - UI katmanı, çalıştırılabilir için derler, Project.BLL, varsayılan proje başvuruyor

Project.UI derlenince, VS çıktı dizinine Project.DAL.dll kopyalamak için yeterince akıllı, ama ben müşterilerine dağıtılmak üzere de çıkış dizinine kopyalanacak Oracle.DataAccess istediğini anlayacak kadar zeki değil .

Bunun neden böyle olduğunu kimse açıklayabilir misiniz? o GAC Oracle.DataAccess görür ve müşteriler de GAC içinde var varsayar için mi?

Bu bir anlaşma büyük değil, ama ben yeni derleme başvurusu eklemek her zaman, yerel kopyalamak için ayarlanır ve hem de benim yapı komut kopyalamak için bir öğe eklemek için hatırlamak zorunda bu biraz sinir bozucu.

Oluştur 09/12/2008 saat 18:46
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
27

Bir şey daha.

Ne zaman Kodunuzdaki başvurulan DLL kullanmayın hiç, bu CopyLocal göz ardı eder ve kopyalamaz çıktı dizinine.

Cevap 14/02/2010 saat 18:36
kaynak kullanıcı

oy
25

Evet, Visual Studio altında iki koşullardan herhangi çıktı yoluna bir DLL kopyalar:

  1. DLL CopyLocal = true ile açıkça başvurulmaktadır
  2. DLL diğer bazı başvurulan DLL yoluyla CopyLocal olmadan veya dolaylı başvuruda bulunulan ve GAC değil

kopyalamak yerel olmaz neden dosya GAC ​​olduğunda nedeni, montaj adlarını çözerken GAC bir (farklı) yerel kopyası yani bile, en yüksek önceliğe sahip olmasıdır, GAC versiyon kullanılacaktır.

Ben size başvurulan tüm harici meclisleri koydu kütüphane dizini kurmak düşündürmektedir. Sonra gac'ed Oracle dosyası (ne de o uğruna yüklü Visual Studio) sahip olmayan bir bilgisayara (veya VM) üzerinde otomatik bir MSBuild komut kurdu. Bu şekilde, dosya yapı kopyalanacak ve VS. kullanırken daha yapılanlara üzerinde daha fazla kontrole sahip olacak

Cevap 02/02/2009 saat 17:49
kaynak kullanıcı

oy
15

Ben montaj proje referans olduğu ve "Kopya yerel" referans özellikleri penceresinde "True", DLL çıkış dizinine kopyalanan değildi olarak gösterilmesini ile başvurulan olsa bile garip bir durum vardı. Ben GAC DLL önceki bir sürümünü vardı ama bu DLL kopyalanan önleyecektir neden görmedim.

Ben şöyle proje referans XML düzenleme elle projeyi boşaltma ve tarafından bulundu:

<ProjectReference Include="..\SomeProject.csproj">
  <Project>{11111111-1111-1111-1111-111111111111}</Project>
  <Name>Some Project Name</Name>
  <Private>True</Private>
</ProjectReference>

Beklendiği gibi DLL çıkışına dizinine kopyalandı. Sadece özellikleri penceresinde True Kopya Local ayarı anlamına geldiğini bulduk <Private>eleman ise tamamen yok olmuştu, ama bunun söz konusu olduğunda "Yanlış" değerine sahip mevcuttu yanlış atar.

Cevap 13/05/2010 saat 16:47
kaynak kullanıcı

oy
3

İşte @RenniePet yukarıda bir yorumda açıklanan yöntem RenniePet açıklayan bir bloga bir bağlantı var (eğer @Shaun önerdi elle olarak proje dosyasını düzenlemek istemiyorsanız):

http://blogs.msdn.com/b/jjameson/archive/2009/11/18/the-copy-local-bug-in-visual-studio.aspx

Cevap 29/11/2013 saat 00:06
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more