Прямо сейчас я устанавливаю опцию Linker/Advanced/KeyFile.
Я получаю "mt.exe: общее предупреждение 810100b3: подписанный блок строгого имени, и встраивание декларации делает недействительным подпись. Необходимо будет оставить этот файл для создания этого допустимым блоком"..
Читая из сети, это кажется, что я должен установить опцию подписания задержки, загрузить SDK и выполнить sn.exe как событие сборки сообщения. Конечно, должен быть более легкий способ сделать эту общую операцию в VS2010?
Здесь довольно много хромоты, это просто никогда не работало раньше. Это было "исправлено" в VS2010, mt.exe теперь генерирует предупреждение вместо того, чтобы позволить этому незаметно пойти не так. Это не настоящее исправление, и нет очевидного исправления, компоновщик не может просто встроить подпись и все же разрешить запуск mt.exe после этого.
Решение состоит в том, чтобы повторно подписать сборку с помощью события после сборки. Сделайте это так:
Command = sn -Ra "$ (TargetPath)" $ (ProjectName) .snk
Если у вас еще нет файла ключа, вам необходимо создайте файл .snk самостоятельно, запустите sn.exe из командной строки Visual Studio. например:
cd \whereTheProjectIsLocated
sn.exe -k MyProject.snk
Или извлеките его из контейнера, или используйте назначенный вами ключевой файл. Отложенное подписание - это просто запуск sn.exe с правильными параметрами командной строки.