Мне нужно 'friend' библиотеку dll, которую я не создавал.
Я вижу в свойствах, что у него сильное имя, но как узнать, что такое сильное имя, поэтому я могу использовать его в System.Runtime.CompilerServices.InternalsVisibleTo?
Ответ 1
Чтобы получить открытый ключ для сборки с сильным именем, используйте инструмент sn:
sn -Tp assembly.dll
Это покажет вам открытый ключ, который нужно добавить в атрибут InternalsVisibleTo. Если вы откроете командную строку Visual Studio, инструмент sn.exe уже будет в пути.
Однако, я бы поставил под сомнение то, что вы пытаетесь достичь. Если у вас есть скомпилированная сборка, которую вы не писали, добавление атрибута InternalsVisibleTo к вашему коду позволит ему получить доступ к внутренним компонентам вашего кода, но он не был бы скомпилирован без уже имеющегося доступа к другу. Если вы пытаетесь получить доступ к внутренним компонентам другой сборки, тогда атрибуту InternalsVisibleTo потребуется добавить к другой сборке - то, что вы не можете сделать, не перекомпилируя ее.
Ответ 2
Вам нужно указать полное имя и токен открытого ключа в файле AssemblyInfo.cs сборки, в котором вам нужен "друг":