Code Contracts 重写器使用强名称 ( sn.exe
) 实用程序对重写的程序集进行签名。但是在 VS 2010 的输出窗格中,我看到:
Microsoft (R) .NET Framework 强名称实用程序版本 3.5.30729.1
有没有办法强制使用sn.exe
. 或者它没有任何区别?
Code Contracts 重写器使用强名称 ( sn.exe
) 实用程序对重写的程序集进行签名。但是在 VS 2010 的输出窗格中,我看到:
Microsoft (R) .NET Framework 强名称实用程序版本 3.5.30729.1
有没有办法强制使用sn.exe
. 或者它没有任何区别?
您可以修改代码合同的 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 副本的确切路径。例如:
<CodeContractsSnExe>"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools\sn.exe"</CodeContractsSnExe>
如果您需要支持备用版本,最好保留旧行,但以值为空为条件进行赋值。这样,您可以仅在需要时指定覆盖。