Кроты с InternalsVisibleTo создают предупреждение "Недопустимая ссылка на сборку"

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

В соответствии с документацией Moles я должен добавить

[assembly: InternalsVisibleTo( "MyAssembly.Moles" )]

атрибут, чтобы я мог получить доступ к внутреннему классу из моего тестового проекта. Однако это, к сожалению, не работает, так как "MyAssembly" строго подписан.

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

[assembly: InternalsVisibleTo( "MyAssembly.Moles, PublicKey=0123456..." )]

К сожалению, это теперь дает мне следующую ошибку при компиляции "MyAssembly":

Ссылка на сборку "MyMoles.Moles, PublicKey=0123456..." недействительна и не может быть разрешена

В документации сказано, что "... среда Moles всегда использует один и тот же ключ для подписи сборки...", но, как говорит компилятор, это не работает. Я также проверил сгенерированный файл "MyAssembly.Moles.dll" с помощью Reflector, чтобы убедиться, что я использую правильный открытый ключ (что я и делаю), поэтому я застрял, так как не знаю, в чем проблема.

Есть идеи?

1 ответ

Убедитесь, что вы вводите ПУБЛИЧНЫЙ КЛЮЧ, а не ПУБЛИЧНЫЙ КЛЮЧ.

Если это не сработает, используйте secutil, чтобы получить открытый ключ. Подробный вывод будет содержать правильное значение ключа. Это синтаксис, который вам нужно использовать:

C:\> secutil -hex -s MyAssemblyName.dll
Другие вопросы по тегам