gpt4 book ai didi

visual-studio-2010 - 没有Visual Studio的Microsoft代码契约(Contract)

转载 作者:行者123 更新时间:2023-12-04 03:34:41 25 4
gpt4 key购买 nike

此堆栈溢出问题:

Microsoft Code Contracts and CI build server

询问如何在不安装Visual Studio 2010的情况下使构建服务器上的代码契约(Contract)有效。我们正在尝试做同样的事情。我们已按照接受的答案中列出的步骤进行操作,但尚未使其正常运行。

除非存在Visual Studio,否则CodeContracts将不会安装在生成服务器上。因此,按照建议,我们做了以下工作:

  • 我们从安装了Visual Studio 2010 Ultimate和Code Contracts Premium的开发计算机上复制了%programfiles%\Microsoft\Contracts\Bin的内容到生成服务器。
  • 我们还复制了包含MSBuild\v4.0Microsoft.CodeContracts.targetsMicrosoft.CodeContractAnalysis.targets文件夹。

  • 根据CodeContracts文档,

    Using msbuild on a project or solution that uses contracts enabled via the VS user interface will perform the same actions as the corresponding build under VS.



    这是我们的用例,我们只是在解决方案文件上调用MSBuild,如下所示。解决方案文件是通过Visual Studio创建的,其中所有预期的Code Contract选项都已配置用于重写。
    <Target Name="Release">
    <MSBuild Projects = "Cofamilies\WebApplication\CofamiliesWeb.sln" Properties="Configuration=Release" />
    </Target>

    但是重写器没有被调用。

    是否有人对我们的缺失和/或疑难解答步骤有建议?

    最佳答案

    我在最新版本的代码契约(Contract)中也遇到了同样的问题。我已经在开发PC上安装了Premium Edition,并在构建服务器上安装了Standard Edition,由于重写器未运行,因此出现以下错误。

    Must use the rewriter when using Contract.Requires<TException>



    似乎Standard Edition缺少MSBuild调用重写器所需的 key 文件(CodeContractsAfter.targets)。

    对我来说,解决方案是将开发PC上的C:\Program Files(x86)\MSBuild\4.0\Microsoft.Common.Targets\ImportAfter中的CodeContractsAfter.targets复制到构建服务器上的相应文件夹中。

    注意:路径不相同,因为我的开发PC正在运行Windows 7 64位,而构建服务器正在运行Windows Server 2003 32位。因此,您需要找出环境的确切路径。

    如果您不使用高级版,则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>

    只需将以上内容粘贴到提到的ImportAfter文件夹中的文件中即可。

    关于visual-studio-2010 - 没有Visual Studio的Microsoft代码契约(Contract),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4291254/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com