Принудительные кодовые контракты для использования sn.exe 4.0

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

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

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


person Michael Damatov    schedule 03.05.2011    source источник


Ответы (1)


Вы можете изменить целевой файл 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, которую вы хотите запустить. например.:

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

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

person Nicole Calinoiu    schedule 03.05.2011