参考2 dll在vb.net 3.5项目中使用相同的命名空间?

Pau*_*mke 6 .net vb.net dll namespaces .net-3.5

我有一个vb.net 3.5类库项目,需要引用具有相同命名空间的两个程序集.我们有两个第三方dll,其中一个是5.1版,另一个是6.1版.它们具有相同的dll文件名,并且它们使用相同的命名空间和函数/类名.项目需要根据具体情况使用其中一种.

我已经研究了ac#process,它使用"extern别名"功能来引入不同的程序集.

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

Visual Studio 8中程序集引用的Aliases属性有何用处

似乎这个功能并不完全适用于vb.net.

我试过的事情

我已经重命名了第二个dll并添加了对我项目的两个引用.在这一点上,我得到了大量的: 'blah' is ambiguous in the namespace.

所以我需要别名不同的版本.在vb.net中,您可以在import语句中执行别名,例如:

Imports version5 = Somedll.Something
Run Code Online (Sandbox Code Playgroud)

问题是我无法为不同版本的dll设置程序集引用别名.显然在vb.net中,您无法在引用属性窗口中设置它们.所以我尝试在我的项目文件中设置它们,如下所示:

<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>
Run Code Online (Sandbox Code Playgroud)

我希望这可以工作:

Imports version5 = SomeDLL5.Something
Imports version6 = SomeDLL6.Something
Run Code Online (Sandbox Code Playgroud)

但是"SomeDLL5/6"并没有出现在intellisense中.那么如何在同一个项目中引用两个dll呢?

Luc*_*hik 6

我是VB规范的领导者.我担心没有VB的方式这样做(没有反思,正如DaMartyr所说).我知道这是拖累.我将把它列入我们下一届VB语言设计会议的议程.