Visual Studio 8中程序集引用的Aliases属性有何用处

Spe*_*oth 66 c# reference csproj visual-studio

当我在Visual Studio 8中向项目添加程序集引用时,该引用的Aliases属性设置为"global".这个属性有什么用?为什么它设置为全局?

MSDN告诉我,这是程序集的别名列表,但不是为什么我可能想要使用此属性或为什么大多数别名为"全局".

MSDN参考

Jon*_*eet 114

这是"外部别名".假设您要使用两种不同的类型,这两种类型都被调用Foo.Bar(即Bar在命名空间中Foo).这两种类型将在不同的程序集中(根据定义) - 您使用VS中的属性将别名与每个引用相关联,然后您可以执行以下操作:

extern alias FirstAlias;
extern alias SecondAlias;

using FirstBar = FirstAlias::Foo.Bar;
using SecondBar = SecondAlias::Foo.Bar;
Run Code Online (Sandbox Code Playgroud)

然后在代码中使用FirstBarSecondBar.

所以基本上它是一个额外的命名级别 - 你不应该使用它,除非你真的,真的必须.这会让很多人感到困惑.尽量避免首先进入这种情况 - 但要注意那些你无法避免的解决方案.

  • Infragistics4.Documents.Excel.v13.2和InfragisticsWPF4.Documents.Excel.v13.2都有此问题。在合并将Windows.Forms和WPF混合在一起的两个项目的过程中。 (2认同)

Mar*_*ell 32

搜索" extern alias "; 它是一个非常少使用的功能,只需要消除两个贡献相同类型的dll之间的歧义(例如,同一个程序集的两个不同版本,或者两个具有共享完全限定名称的类的程序集).

"global"是默认值.例如,如果您有一个被调用的类Foo.System,则可以通过明确地引用主System命名空间global::System.