c# .net

c# - El alias externo ''xxx'' no se especificó en una opción de referencia



.net (11)

Tengo dos ensamblajes que desafortunadamente definen el mismo tipo en el mismo espacio de nombres. extern alias usar un extern alias para solucionar el problema. En el IDE de Visual Studio he establecido la propiedad "Alias" de la referencia a mi alias. Se supone que esto cambia la línea de comandos del compilador de C # para que sea algo como esto:

/reference:MyAlias=MyAssembly.dll

Pero en realidad no hace eso. El IDE de Visual Studio parece ignorar la configuración de la propiedad Aliases en la referencia. Entonces cuando voy y agrego la línea extern alias MyAlias; en la parte superior de mi archivo de código C # aparece el error de que el alias no se especificó en una opción de referencia para el compilador. No puedo entender lo que estoy haciendo mal. ¿Algunas ideas?


Brian, tuve el mismo problema que tú y descubrí cómo solucionarlo.

Haría lo mismo que tú:

  1. Use la ventana de propiedades para cambiar el alias para el ensamblaje de ''global'' a ''MyAlias''
  2. En la parte superior del archivo donde se utiliza el ensamblado con alias, inserte el alias externo MyAlias. Esto debe ser antes de cualquier instrucción de uso.
  3. Use el prefijo de alias para usar el espacio de nombres que desee, por ejemplo, usando MyAlias ​​:: MyNamespace.

Y todavía obtendría el error. Después de atormentar un poco, me di cuenta de que la manera de solucionarlo es establecer el dll referenciado en un dll que está fuera de la solución en la que estás trabajando. Una vez que lo hice, el mensaje de error que ambos estábamos viendo desapareció. y pude continuar trabajando en mi proyecto.

Espero que eso ayude, ¡feliz codificación!


Establezca el marco de destino del proyecto en .NET 4.5.1 .



Tenía un problema similar, parece que cuando limpia su solución y crea el proyecto, por primera vez, MSBuild ignora las referencias y da error (puede que no tenga ensamblados todavía con las referencias especificadas), sin embargo, en el segundo intento de la compilación , funciona.


Tengo el mismo problema y pude reproducir el problema.

Resulta que los alias de referencia se ignoran en proyectos que contienen archivos xaml que tienen una definición xmlns para el ensamblaje de salida como xmlns: local = ''clr-namespace: TestProject''.

Si cree que este es su caso también, vote mi informe de error en Microsoft Connect.

EDITAR: Hay una solución sugerida en el enlace de arriba que requiere editar el archivo de proyecto manualmente. Para que esto funcione, tuve que dar el camino completo de la asamblea. Agregue las siguientes instrucciones al final de su archivo de proyecto:

<Target Name="solveAliasProblem" > <ItemGroup> <ReferencePath Remove="FullPath.dll"/> <ReferencePath Include="FullPath.dll"> <Aliases>ourAlias</Aliases> </ReferencePath> </ItemGroup> </Target> <PropertyGroup> <CoreCompileDependsOn>solveAliasProblem;$(PrepareResourcesDependsOn)</CoreCompileDependsOn> </PropertyGroup>


Trabajando para mí en VS2008 usando estos pasos:

  1. Use la ventana de propiedades para cambiar el alias para el ensamblaje de ''global'' a ''MyAlias''
  2. En la parte superior del archivo donde se utiliza el ensamblado con extern alias MyAlias . Esto debe ser antes de cualquier instrucción de using .
  3. Use el prefijo de alias para usar el espacio de nombres que desee, por ejemplo, using MyAlias::MyNamespace .

Tuve el mismo problema y finalmente encontré que el archivo .csproj tiene una versión de destino de 4.5, mientras que el dll con el que enfrenté el problema está dirigido a 4.5.2.

Cambié mi versión de destino del archivo .csproj a 4.5.2 y obtuve una compilación exitosa.


Tuve el mismo problema y se resolvió haciendo lo siguiente.

Vaya a la ventana de propiedades del ensamblado con el conflicto y cambie la propiedad Aliases de ''global'' a ''X'' (X - su nombre de alias)

Espero que esto ayude.


Tuve el mismo problema, y ​​pude resolverlo solo cuando cambié la versión de destino a 4.6.1. Las versiones 4, 4.5, 4.5.1 o 4.6 no ayudaron.



myprojectHad el mismo problema, pero las soluciones anteriores no funcionaban mi archivo de proyecto se veía como

<Reference Include="AntiXSSLibrary" Condition="''$(TargetFrameworkVersion)'' == ''v4.0'' or ''$(TargetFrameworkVersion)'' == ''v4.5''"> <HintPath>../Dependencies/Third-party/.net 4/AntiXSSLibrary.dll</HintPath> <Aliases>antixss</Aliases> </Reference> <Reference Include="AntiXssLibrary"> <HintPath>../../lib/myproject/AntiXssLibrary.dll</HintPath> </Reference>

Al agregar el alias, el proyecto real funcionará. Asi que

<Reference Include="AntiXSSLibrary" Condition="''$(TargetFrameworkVersion)'' == ''v4.0'' or ''$(TargetFrameworkVersion)'' == ''v4.5''"> <HintPath>../Dependencies/Third-party/.net 4/AntiXSSLibrary.dll</HintPath> <Aliases>antixss</Aliases> </Reference> <Reference Include="AntiXssLibrary"> <HintPath>../../lib/myproject/AntiXssLibrary.dll</HintPath> <Aliases>antixss</Aliases> </Reference>