在/ reference选项中未指定extern别名'xxx'

Bri*_*ink 41 .net c#

我有两个程序集,不幸的是在同一名称空间中定义了相同的类型.我正在尝试使用a extern alias来解决问题.在Visual Studio IDE中,我已将引用的"别名"属性设置为我的别名.这应该是将C#编译器命令行更改为:

/reference:MyAlias=MyAssembly.dll
Run Code Online (Sandbox Code Playgroud)

但它实际上并没有这样做.Visual Studio IDE似乎只是忽略引用上的别名属性设置.因此,当我extern alias MyAlias;在C#代码文件的顶部添加行时,我得到错误,即在编译器的/ reference选项中未指定别名.我无法弄清楚我做错了什么.有任何想法吗?

orc*_*cun 22

我有同样的问题,我能够重现这个问题.

原来参考别名上含有具有了xmlns定义像的xmlns输出组件XAML文件项目忽略:本地="CLR-名称空间:TestProject".

如果您认为这也是您的情况,请在Microsoft Connect上投票我的错误报告.

编辑:上面的链接中有一个建议的解决方法,需要手动编辑项目文件.为了使其工作,我必须提供装配的完整路径.将以下说明添加到项目文件的末尾:

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


soo*_*ise 10

Brian,我和你有同样的问题,我想出了如何修复它.

我会做同样的事情:

  1. 使用属性窗口将程序集的别名从"global"更改为"MyAlias"
  2. 在使用别名程序集的文件的顶部,输入extern别名MyAlias.这必须在任何using语句之前.
  3. 使用别名前缀来使用所需的命名空间,例如使用MyAlias :: MyNamespace.

我仍然会得到错误.在搞砸了一下后,我发现修复它的方法是将引用的dll设置为你正在使用的解决方案之外的dll.一旦我这样做,我们看到的错误消息就消失了,我能够继续我的项目.

我希望有所帮助,快乐编码!


小智 10

更新:这是一个错误.它将在.Net 4.5中修复.

Microsoft Connect错误报告中所示.


and*_*axo 5

使用以下步骤在 VS2008 中为我工作:

  1. 使用属性窗口将程序集的别名从“global”更改为“MyAlias”
  2. 在使用别名程序集的文件顶部,放置extern alias MyAlias. 这必须出现在任何using声明之前。
  3. 使用别名前缀来使用您想要的命名空间,例如using MyAlias::MyNamespace.

  • 但对我来说,运气不好仍然收到错误“/reference 选项中未指定外部别名” (2认同)