Rob*_*Rob 9 msbuild teamcity visual-studio-2010 code-contracts
这个堆栈溢出问题:
Microsoft Code Contracts和CI构建服务器
询问如何在不安装Visual Studio 2010的情况下获取在构建服务器上运行的代码契约.我们正在尝试这样做.我们已按照接受的答案中列出的步骤进行操作,但未能使其正常运行.
除非存在Visual Studio,否则CodeContracts不会安装在构建服务器上.所以按照这个建议,我们已经完成了以下工作:
%programfiles%\Microsoft\Contracts\Bin安装了Visual Studio 2010 Ultimate和Code Contracts Premium的开发计算机的内容复制到构建服务器.MSBuild\v4.0包含Microsoft.CodeContracts.targets和的文件夹Microsoft.CodeContractAnalysis.targets.根据CodeContracts文档,
在使用通过VS用户界面启用的合同的项目或解决方案上使用msbuild将执行与VS下相应构建相同的操作.
这是我们的用例,我们只是在我们的解决方案文件中调用MSBuild,如下所示.解决方案文件是通过Visual Studio创建的,并配置了所有预期的代码协定选项以进行重写.
<Target Name="Release">
<MSBuild Projects = "Cofamilies\WebApplication\CofamiliesWeb.sln" Properties="Configuration=Release" />
</Target>
Run Code Online (Sandbox Code Playgroud)
但重写者没有被召唤.
有没有人建议我们缺少什么和/或建议的故障排除步骤?
Gid*_*sey 10
最新版本的Code Contracts我遇到了同样的问题.我在构建服务器上的开发PC和标准版上安装了Premium Edition,并且由于重写器未运行而出现以下错误.
使用Contract.Requires <TException>时必须使用重写器
看来标准版缺少MSBuild调用重写器所需的密钥文件(CodeContractsAfter.targets).
我的解决方案是将CodeContractsAfter.targets从我的开发PC上的C:\ Program Files(x86)\ MSBuild\4.0\Microsoft.Common.Targets\ImportAfter复制到构建服务器上的相应文件夹.
注意:路径不相同,因为我的开发PC运行的是Windows 7 64位,而构建服务器运行的是Windows Server 2003 32位.因此,您需要确定适合您环境的路径.
如果您不使用Premium Edition,CodeContractsAfter.targets文件的内容为:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Begin CodeTools: CodeContracts: After -->
<PropertyGroup>
<CodeContractsInstallDir Condition="'$(CodeContractsInstallDir)'==''">C:\Program Files (x86)\Microsoft\Contracts\</CodeContractsInstallDir>
</PropertyGroup>
<Import Condition="'$(CodeContractsImported)' != 'true' AND '$(DontImportCodeContracts)' != 'true'" Project="$(CodeContractsInstallDir)MsBuild\v4.0\Microsoft.CodeContracts.targets" />
<!-- End CodeTools: CodeContracts: After -->
</Project>
Run Code Online (Sandbox Code Playgroud)
只需将上面的内容粘贴到提到的ImportAfter文件夹的文件夹中即可.
| 归档时间: |
|
| 查看次数: |
3521 次 |
| 最近记录: |