Visual studio 2010 没有Visual Studio的Microsoft代码合同
此堆栈溢出问题: 询问如何在不安装Visual Studio 2010的情况下使代码契约在生成服务器上工作。我们也在努力做到这一点。我们已经按照公认的答案中概述的步骤进行了操作,但未能使其正常工作 除非存在Visual Studio,否则不会在生成服务器上安装CodeContracts。根据建议,我们做了以下工作:Visual studio 2010 没有Visual Studio的Microsoft代码合同,visual-studio-2010,msbuild,teamcity,code-contracts,Visual Studio 2010,Msbuild,Teamcity,Code Contracts,此堆栈溢出问题: 询问如何在不安装Visual Studio 2010的情况下使代码契约在生成服务器上工作。我们也在努力做到这一点。我们已经按照公认的答案中概述的步骤进行了操作,但未能使其正常工作 除非存在Visual Studio,否则不会在生成服务器上安装CodeContracts。根据建议,我们做了以下工作: 我们将%programfiles%\Microsoft\Contracts\Bin的内容从安装了Visual Studio 2010 Ultimate和code Contracts
%programfiles%\Microsoft\Contracts\Bin
的内容从安装了Visual Studio 2010 Ultimate和code Contracts Premium的开发计算机复制到生成服务器MSBuild\v4.0
文件夹,该文件夹包含Microsoft.CodeContracts.targets
和Microsoft.CodeContractAnalysis.targets
<Target Name="Release">
<MSBuild Projects = "Cofamilies\WebApplication\CofamiliesWeb.sln" Properties="Configuration=Release" />
</Target>
但是重写器没有被调用
是否有人对我们缺少的内容提出了建议和/或建议了故障排除步骤?我对最新版本的代码契约也有同样的问题。我已经在我的开发PC上安装了Premium版本,在构建服务器上安装了Standard版本,由于重写器未运行,因此出现以下错误 使用时必须使用重写器 合同。需要 标准版似乎缺少MSBuild调用重写器所需的密钥文件(CodeContractsAfter.targets) 我的解决方案是将开发PC上的C:\Program Files(x86)\MSBuild\4.0\Microsoft.Common.targets\ImportAfter中的CodeContractsAfter.targets复制到生成服务器上的相应文件夹 注意:路径不同,因为我的开发PC运行的是64位Windows 7,而构建服务器运行的是32位Windows server 2003。因此,您需要为您的环境找出确切的路径 如果您未使用Premium版本,CodeContractsAfter.targets文件的内容为:
C:\ProgramFiles(x86)\Microsoft\Contracts\
只需将上述内容粘贴到ImportAfter文件夹中提到的文件夹中。这是我的建议。
它基于和
$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)…\packages\DotNet.Contracts.1.10.20606.1\'))`
这有助于我在Jenkins build服务器上进行构建,该服务器未安装VS,仅安装了MSBuild 12.0
<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>