Какая польза от свойства Aliases ссылок на сборки в Visual Studio 8

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

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

Справочник MSDN


person Spencer Booth    schedule 13.11.2008    source источник


Ответы (2)


Это для "внешних псевдонимов". Предположим, вы хотите использовать два разных типа, оба из которых называются Foo.Bar (т.е. Bar в пространстве имен Foo). Эти два типа будут находиться в разных сборках (по определению) - вы используете свойство в VS, чтобы связать псевдоним с каждой ссылкой, тогда вы можете сделать:

extern alias FirstAlias;
extern alias SecondAlias;

using FirstBar = FirstAlias::Foo.Bar;
using SecondBar = SecondAlias::Foo.Bar;

а затем используйте FirstBar и SecondBar в своем коде.

Так что, по сути, это дополнительный уровень именования - и вы не должны использовать его, если в этом нет необходимости. Это запутает многих. В первую очередь постарайтесь избежать такой ситуации - но помните об этом решении в те моменты, когда вы просто не можете его избежать.

person Jon Skeet    schedule 13.11.2008
comment
У меня был случай, когда сторонний поставщик отправлял продукт, работающий на .Net V2, с делегатом System.Func<TResult> (возможно, для репликации синтаксиса V3.5?) ... проблемы, конечно, возникают, когда упоминается проект .Net V4 сторонняя библиотека. Используя псевдоним, я избегал конфликтов (у Visual Studio все еще есть проблемы и обнаруживаются ошибки, но не у компилятора). Используя ключевое слово extern (впервые я использую сегодня), я смог явно указать тип в сторонней библиотеке. Я просто немного удивлен, что мне приходится использовать псевдоним для неконфликтного типа. - person Steve B; 22.09.2011
comment
У Infragistics4.Documents.Excel.v13.2 и InfragisticsWPF4.Documents.Excel.v13.2 есть эта проблема. В процессе слияния два проекта будут смешивать Windows.Forms и WPF. - person AMissico; 11.11.2014
comment
Исчезло ли свойство "Псевдонимы" ссылки? Я использую Сообщество VS 2017 и не могу найти эту опцию! - person Pedro Gaspar; 05.12.2018
comment
@PedroGaspar: Хм, не уверен. Придется завтра искать. - person Jon Skeet; 05.12.2018

Найдите "внешний псевдоним" ; это очень редко используемая функция, которая нужна только для устранения неоднозначности между двумя библиотеками DLL, которые вносят одни и те же типы (например, две разные версии одной и той же сборки или две сборки, у которых есть класс с полностью определенным именем).

"global" по умолчанию. Например, если у вас есть класс с именем Foo.System, вы можете однозначно ссылаться на основное пространство имен System через global::System.

person Marc Gravell    schedule 13.11.2008
comment
Рабочая ссылка: docs.microsoft.com/en -us / dotnet / csharp / language-reference / - person kampsj; 12.02.2019