Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 没有Visual Studio的Microsoft代码合同_Visual Studio 2010_Msbuild_Teamcity_Code Contracts - Fatal编程技术网

Visual studio 2010 没有Visual Studio的Microsoft代码合同

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

此堆栈溢出问题:

询问如何在不安装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
  • 根据联合合同文件

    在使用通过VS用户界面启用的契约的项目或解决方案上使用msbuild将执行与VS下相应生成相同的操作

    这是我们的用例,我们只是在解决方案文件上调用MSBuild,如下所示。解决方案文件是通过VisualStudio创建的,其中所有预期的代码契约选项都配置为重写

    <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文件夹中提到的文件夹中。

    这是我的建议。 它基于和

  • 从nuget添加
  • 将以下代码添加到项目文件中:
  • 
    $([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>