强制代码合同使用sn.exe 4.0

时间:2011-05-03 09:22:25

标签: .net visual-studio-2010 code-contracts strongname

Code Contracts重写器使用强名称(sn.exe)实用程序来重新签名重写的程序集。但是,在VS 2010的“输出”面板中,我看到:

  

Microsoft(R).NET Framework强名称实用程序版本3.5.30729.1

有没有办法强制使用sn.exe版本 4.0 。或者它没有任何区别?

1 个答案:

答案 0 :(得分:2)

您可以修改代码约定的MSBuild目标文件,以强制它使用4.0版SDK中的sn.exe。有问题的目标文件通常位于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>

如果您需要支持备用版本,最好保留旧行,但要使赋值为空值。这样,您只能在需要时指定覆盖。