2011-06-29 21 views
5

Aynı ad alanına sahip iki derlemeye başvurması gereken bir vb.net 3.5 sınıf kitaplığı projem var. Biri sürüm 5.1, diğeri sürüm 6.1 olan iki üçüncü taraf dll'si var. Aynı dll dosya adlarına sahipler ve aynı ad alanı ve işlev/sınıf adlarını kullanıyorlar. Proje, belirli bir duruma bağlı olarak birini veya diğerini kullanmalıdır.Referans 2 dlls vb.net 3.5 projesinde aynı ad alanını kullanarak?

Farklı meclisleri çekmek için "extern alias" özelliğini kullanan bir C# işleminde araştırdım.

http://blogs.msdn.com/b/ansonh/archive/2006/09/27/774692.aspx

What use is the Aliases property of assembly references in Visual Studio 8

özellik vb.net için tam olarak geçerli olmadığını görünüyor.

şeyler ben 2 dll adını ve projeme Her iki referansı ekledik

çalıştı ettik. Bu noktada ton: 'blah' is ambiguous in the namespace.

Farklı sürümleri takma gereği duyuyorum. vb.net size böyle bir ithalat ekstresinde takma adlarını yapabilirsiniz:

Imports version5 = Somedll.Something 

Sorun dll farklı sürümleri için kurulum montaj referans takma olamaz olduğunu. Görünüşe göre, etc.net'de bunları referans özellikler penceresinde ayarlayamazsınız. Bu yüzden böyle benim proje dosyasında ayarı çalıştı:

Imports version5 = SomeDLL5.Something 
Imports version6 = SomeDLL6.Something 

Ama "SomeDLL5/6" intellisense içinde görünmüyor:

<Reference Include="somedll.5.Navigation"> 
    <HintPath>..\..\Utility\ThirdPartyDLLS\somedll.5.dll</HintPath> 
     <Aliases>SomeDLL5</Aliases> 
     <Private>False</Private> 
</Reference> 
<Reference Include="somedll.6.Navigation, Version=6.1.0.0, Culture=neutral, PublicKeyToken=6d02be8724ca751c, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\..\Utility\ThirdPartyDLLS\somedll.6.dll</HintPath> 
     <Aliases>SomeDLL6</Aliases> 
     <Private>False</Private> 
</Reference> 

Daha sonra bu çalışmayı beklenebilir. Öyleyse, aynı projede her iki dll'ye nasıl başvurabilirim?

+0

Bu, Intellisense'deki bir hatadır. Bu, ağır bir şekilde AFAIK tarafından test edilen bir senaryo değildir. Derlemeyi ve hataları almayı denediniz mi? – JaredPar

+0

Yeşil dalgalıyı yakalarım: Imports 'da belirtilen ad alanı veya türü hiçbir ortak üye içermiyor veya bulunamıyor. Ad alanının veya türün tanımlandığından ve en az bir genel üye içerdiğinden emin olun. İçe aktarılan öğe adının takma ad kullanmadığından emin olun. –

cevap

5

Ben VB spec kurşun değilim. Korkarım ki bunu yapmak için VB yolu yoktur (DaMartyr'ın dediği gibi yansıma yok). Bunun bir sürtünme olduğunu biliyorum. Bir sonraki VB Dil Tasarım Toplantımızın gündemine koyacağım.

+0

Bu berbat olacağız. Kesin cevap için teşekkürler! –

+0

@PaulLemke: Başka bir çözüm buldunuz mu? Genel olarak: Bu bilgi hala güncel mi yoksa şu anda bunu gerçekleştirmenin bir yolu var mı? Bu konudaki herhangi bir yardım/güncelleme büyük beğeni topluyor! –

+0

Bildiğim kadarıyla hiçbir şey değişmedi. Afedersiniz. –

0

Bu yardımcı olur mu? "Aynı tür adları ve aynı ad alanlarına (aynı dll'nin 2 farklı sürümü gibi) sahip 2 derlemeye başvurduğunuz nadir olayda - bir takma ad kullanarak belirli bir tür için hangi derlemenin kullanılacağını ayırt edebilirsiniz. tüm referanslar için globaldir, ancak başvuruda bulunduğunuzda herhangi bir derleme için kendi takma adınızı belirtebilirsiniz (bir derleyici anahtarı kullanarak - veya yalnızca Visual Studio'daki özellikler kutusunu kullanın) - ve kod dosyanızın üst kısmında bir extern alias maddesi varsa bunu kullanmak nereye - sizinle :: MyNamespace.Type"

Kaynak farklı derlemeler gelen türlerini erişmek olacaktır: two different DLL with same namespace

+0

Ve sorun şu ki ... VB'de.İnternetteki referansı denediğimde ve netleştiğinde net bile intellisense'de görünmüyor. C# Bu referans alias'ın çalışmasına sahip gibi görünüyor. –

İlgili konular