Tengo un proyecto de biblioteca de clase vb.net 3.5 que necesita hacer referencia a dos ensamblajes que tienen el mismo espacio de nombres. Tenemos dos dll de terceros en los que uno es la versión 5.1 y el otro es la versión 6.1. Tienen el mismo nombre de archivo dll y utilizan el mismo espacio de nombres y funciones/nombres de clase. El proyecto necesita usar uno u otro dependiendo de una situación específica.Referencia 2 dlls que utilizan el mismo espacio de nombres en el proyecto vb.net 3.5?
He investigado un proceso de C# que utiliza la característica "alternar externo" para extraer los diferentes ensamblajes.
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
Parece que esta función no está totalmente disponible para vb.net.
cosas que he intentado
He cambiado el nombre de la segunda DLL y añadí ambas referencias a mi proyecto. En este punto obtengo toneladas de: 'blah' is ambiguous in the namespace
.
Así que necesito alias las diferentes versiones. En vb.net que puede hacer alias en una declaración de importación como:
Imports version5 = Somedll.Something
El problema es que no puede configurar un alias referencia de ensamblado de las diferentes versiones de la DLL. Aparentemente en vb.net no puedes configurarlos en la ventana de propiedades de referencia. Así que traté de colocarlos en mi archivo de proyecto como este:
<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>
Entonces yo esperaría que esto funcione:
Imports version5 = SomeDLL5.Something
Imports version6 = SomeDLL6.Something
Pero el "SomeDLL5/6" no aparece en IntelliSense. Entonces, ¿cómo puedo hacer referencia a ambos dll en el mismo proyecto?
Es posible que esto sea solo un error en Intellisense. No es un escenario que está fuertemente probado AFAIK. ¿Has intentado compilar y has recibido errores? – JaredPar
Obtengo el garabato verde: el espacio de nombre o tipo especificado en Imports no contiene ningún miembro público o no se puede encontrar. Asegúrese de que el espacio de nombre o el tipo esté definido y contenga al menos un miembro público. Asegúrese de que el nombre del elemento importado no use ningún alias. –