Как мне получить строгое название сборки? - PullRequest
15 голосов
/ 13 августа 2011

Мне нужно 'друг' библиотека dll, которую я не писал.

Я вижу в свойствах, что оно имеет строгое имя, но как мне узнать, что такое строгое имя, чтобы я мог использовать его в System.Runtime.CompilerServices.InternalsVisibleTo?

Ответы [ 2 ]

14 голосов
/ 13 августа 2011

Чтобы получить открытый ключ сборки со строгим именем, используйте инструмент sn :

sn -Tp assembly.dll

Это покажет вам открытый ключ, который вам нужно вставить в InternalsVisibleTo атрибут.Если вы откроете командную строку Visual Studio, инструмент sn.exe уже будет в пути.

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

2 голосов
/ 13 августа 2011

Вы должны указать полное имя и токен открытого ключа в файле AssemblyInfo.cs сборки, в которой вам «нужен друг»:

[assembly: InternalsVisibleTo("FullAssemblyName, PublicKey=....", )]

Если у вас есть Reflector.NET или ildasm в руках, вы можете использовать их для просмотра этой информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...