Как управлять assembly.Net выбирает конфликта имен?

мне нужно (нести меня) по той или иной причине использовать версию WinRT системы.Текст.Кодирование пространства имен. Я могу добавить ссылку на сборку вручную и тому подобное, но она все равно будет использовать реализацию mscorlib. И я не могу полностью удалить mscorlib по-видимому.

Как я могу заставить свой проект использовать систему WinRT.Текст.Кодирование.dll вместо mscorlib?

в принципе, мне нужно это, чтобы создать этот кусок IL:

call class [System.Text.Encoding]System.Text.Encoding [System.Text.Encoding]System.Text.Encoding::get_UTF8()

вместо это:

call class [mscorlib]System.Text.Encoding [mscorlib]System.Text.Encoding::get_UTF8()

1 ответов


вам нужно псевдоним ссылка. Для этого перейдите в Обозреватель решений и выберите ссылку, для которой требуется псевдоним. Просмотрите свойства и измените поле псевдонимы, чтобы добавить уникальное имя псевдонима.

Alias field in properties with custom alias, myalias

после того как вы определили уникальный псевдоним, вы измените ваш код, чтобы добавить extern alias декларации.

extern alias myalias;

наконец, вы ссылаетесь на типы через псевдоним, как в (этот пример алиасной системы.DLL-файла):

myalias::System.Diagnostics.Trace.WriteLine("I referenced this via my alias.");

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

дополнительные сведения об псевдонимах см. В разделе этот ответ StackOverflow on какое значение имеет свойство Aliases ссылок на сборки.