47 votes

L'alias externe 'xxx' n'était pas spécifié dans une option / référence

J'ai deux assemblées qui, malheureusement, définir le même type dans le même espace de noms. Je suis en train d'utiliser un extern alias pour contourner le problème. Dans l'IDE de Visual Studio, j'ai mis le "Alias" propriété de la référence à mon pseudo. C'est censé changer le compilateur C# ligne de commande pour être quelque chose comme ceci:

/reference:MyAlias=MyAssembly.dll

Mais il n'est pas réellement le faire. L'IDE de Visual Studio semble ignorer les Alias paramètre de propriété sur la référence. Alors quand je rentre et ajoutez la ligne extern alias MyAlias; en haut de mon code C# de fichier, j'obtiens le message d'erreur que l'alias n'a pas été spécifiée dans l'une ou de référence de l'option pour le compilateur. Je ne peux pas comprendre ce que je fais de mal. Des idées?

25voto

orca Points 6807

J'ai le même problème et j'ai pu reproduire le problème.

Il s'avère référence alias sont ignorés sur les projets contenant des fichiers xaml qui a un xmlns définition à la sortie de l'assemblée, comme xmlns:local='clr-namespace:projet d'essai'.

Si vous pensez que c'est votre cas, merci de voter mon rapport de bug à Microsoft Connect.

EDIT: Il existe une solution de contournement proposée dans le lien ci-dessus qui nécessite la modification du projet de fichier manuellement. Pour ce travail, j'ai dû donner le chemin complet de l'assemblée. Ajouter les instructions suivantes à la fin de votre fichier de projet:

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

11voto

sooprise Points 5324

Brian, j'ai eu le même problème que vous et j'ai trouvé comment résoudre le problème.

Je voudrais faire la même chose que vous:

  1. Utilisez la fenêtre propriétés pour modifier l'alias de l'assemblée de 'global' pour 'MyAlias'
  2. En haut du fichier où l'alias de l'assemblée est utilisé, mis extern alias MyAlias. Ce doit être avant tout à l'aide de relevés.
  3. Utiliser l'alias le préfixe à utiliser l'espace de noms que vous voulez, par exemple à l'aide de MyAlias::MyNamespace.

Et je voudrais quand même l'erreur. Après avoir vissé un peu, j'ai trouvé que le moyen pour résoudre ce problème est de définir le référencés dll est une dll qui est en dehors de la solution de travail. Une fois que je l'ai fait, le message d'erreur nous étions tous les deux de voir s'en alla, et j'ai pu continuer à travailler sur mon projet.

J'espère que ça aide, amusez-vous!

10voto

Frederic Gaudet Points 81

Une mise à jour: c'est un bug. Il sera corrigé dans .Net 4.5.

Comme indiqué dans le rapport de bogue de Microsoft Connect .

4voto

andypaxo Points 3080

Travailler pour moi dans VS2008 en utilisant ces étapes:

  1. Utilisez la fenêtre des propriétés pour changer l'alias de l'assembly de «global» à «MyAlias»
  2. En haut du fichier où l'assembly aliasé est utilisé, mettez extern alias MyAlias . Ce doit être avant toute instruction using .
  3. Utilisez le préfixe d'alias pour utiliser l'espace de noms que vous souhaitez, par exemple using MyAlias::MyNamespace .

2voto

Akash Kava Points 18026

J'ai eu un problème similaire exact, ressemble à lorsque vous nettoyez votre solution et générez le projet, la première fois que MSBuild ignore les références et donne une erreur (il se peut qu'il n'ait pas encore construit d'assemblys avec les références spécifiées), cependant au deuxième essai de la génération , Ça marche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X