Кроты с InternalsVisibleTo создают предупреждение «Недопустимая ссылка на сборку» - PullRequest
1 голос
/ 02 января 2012

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

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

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

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

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

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

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

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

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

Есть идеи?

1 Ответ

2 голосов
/ 05 января 2012

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

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

C:\> secutil -hex -s MyAssemblyName.dll
...