Когда я добавляю ссылку на сборку в проект в Visual Studio 8, для свойства Псевдонимы этой ссылки устанавливается значение «global». Для чего это свойство подходит и почему оно установлено как глобальное?
MSDN сообщает мне, что это список псевдонимов для сборки, но не почему я могу использовать это свойство или почему большинство из них имеют псевдонимы «глобальные».





Найдите "внешний псевдоним"; это очень редко используемая функция, которая нужна только для устранения неоднозначности между двумя библиотеками DLL, которые содержат одни и те же типы (например, две разные версии одной и той же сборки или две сборки, у которых есть класс с полностью определенным именем).
"global" по умолчанию. Например, если у вас есть класс с именем Foo.System, вы можете однозначно ссылаться на основное пространство имен System через global::System.
Это для "внешних псевдонимов". Предположим, вы хотите использовать два разных типа, оба из которых называются Foo.Bar (то есть Bar в пространстве имен Foo). Эти два типа будут находиться в разных сборках (по определению) - вы используете свойство в VS, чтобы связать псевдоним с каждой ссылкой, тогда вы можете сделать:
extern alias FirstAlias;
extern alias SecondAlias;
using FirstBar = FirstAlias::Foo.Bar;
using SecondBar = SecondAlias::Foo.Bar;
а затем используйте FirstBar и SecondBar в своем коде.
Так что, по сути, это дополнительный уровень именования - и вы не должны использовать его, если в этом нет необходимости. Это запутает многих. В первую очередь постарайтесь избежать такой ситуации, но помните об этом решении в те моменты, когда вы просто не можете его избежать.
У меня был случай, когда сторонний поставщик отправлял продукт, работающий на .Net V2, с делегатом System.Func<TResult> (возможно, для репликации синтаксиса V3.5?) ... проблемы, конечно, возникают, когда упоминается проект .Net V4 сторонняя библиотека. Используя псевдоним, я избегал конфликтов (у Visual Studio все еще есть проблемы и обнаруживаются ошибки, но не у компилятора). Используя ключевое слово extern (впервые я использую сегодня), я смог явно указать тип в сторонней библиотеке. Я просто немного удивлен, что мне приходится использовать псевдоним для неконфликтного типа.
Infragistics4.Documents.Excel.v13.2 и InfragisticsWPF4.Documents.Excel.v13.2 имеют эту проблему. В процессе слияния двух проектов, которые будут смешивать Windows.Forms и WPF.
Исчезло ли свойство "Псевдонимы" ссылки? Я использую Сообщество VS 2017 и не могу найти эту опцию!
@PedroGaspar: Хм, не уверен. Придется завтра искать.
Рабочая ссылка: docs.microsoft.com/en-us/dotnet/csharp/language-reference/…