不幸的是,我有两个程序集在同一个命名空间中定义了同一个类型。我正在尝试使用 extern alias
来解决这个问题。在 Visual Studio IDE 中,我已将引用的“别名”属性设置为我的别名。这应该将 C# 编译器命令行更改为如下所示:
/reference:MyAlias=MyAssembly.dll
但它实际上并没有这样做。 Visual Studio IDE 似乎只是忽略了引用上的别名属性设置。因此,当我在我的 C# 代码文件的顶部添加行 extern alias MyAlias;
时,我收到错误消息,即编译器的/reference 选项中未指定别名。我不知道我做错了什么。有什么想法吗?
最佳答案
我有同样的问题,我能够重现该问题。
事实证明,在包含 xaml 文件的项目中,引用别名被忽略,这些文件对输出程序集具有 xmlns 定义,如 xmlns:local='clr-namespace:TestProject'。
如果你也认为这是你的情况,请投票给我 bug report在 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>
关于c# - 外部别名 'xxx' 未在/reference 选项中指定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2502640/