Принудительно использовать контракты кода для использования sn.exe 4.0 - PullRequest
4 голосов
/ 03 мая 2011

Программа переписки Code Contracts использует утилиту Strong Name (sn.exe) для отставки переписанной сборки. Однако в области вывода VS 2010 я вижу:

Утилита для строгих имен Microsoft (R) .NET Framework версии 3.5.30729.1

Есть ли способ заставить использовать версию 4.0 из sn.exe. Или это не имеет никакого значения?

1 Ответ

2 голосов
/ 03 мая 2011

Вы можете изменить файл целей MSBuild для Code Contracts, чтобы заставить его использовать sn.exe из SDK версии 4.0. Рассматриваемый файл целей обычно находится в C:\Program Files\Microsoft\Contracts\MsBuild\v4.0\Microsoft.CodeContracts.targets.

Самой простой модификацией будет замена строки

<CodeContractsSnExe>"$(CodeContractsSdkPath)Bin\NETFX 4.0 Tools\sn.exe"</CodeContractsSnExe>

с указанием версии, указывающей точный путь к копии sn.exe, которую вы хотите запустить. e.g.:

<CodeContractsSnExe>"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools\sn.exe"</CodeContractsSnExe>

Если вам нужно поддерживать альтернативные версии, было бы лучше сохранить старую строку, но сделать присвоение условным, если значение пустое. Таким образом, вы можете указать переопределение только тогда, когда вам это нужно.

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