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呢?