Кроты с 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