如果未安装Code Contracts,会发生什么?

时间:2014-10-17 09:16:48

标签: c# .net msbuild code-contracts

我的csproj定义了一个构建配置' Debug-plus'与Code Contracts

<PropertyGroup Condition="'$(Configuration)' == 'Debug-plus'">
    <DefineConstants>TRACE;DEBUG;CONTRACTS_FULL</DefineConstants>
    <CodeContractsEnableRuntimeChecking>True</CodeContractsEnableRuntimeChecking>

如果有人在没有安装代码合同的情况下尝试在此配置中构建项目,会发生什么?

理想情况下,我希望他们看到一条错误消息,说明如何安装代码合同。最糟糕的情况可能是构建成功但没有在运行时检查代码合同,因此测试可以在不同的计算机上提供不同的结果。

1 个答案:

答案 0 :(得分:2)

如果您将CodeContracts用作NuGet包,那么在没有CodeContracts包的计算机上将无法进行构建。他们会看到这样的错误:

Build FAILED.

"c:\src\MyProj.csproj" (default target) (1) ->
(EnsureNuGetPackageBuildImports target) ->
  c:\src\MyProj.csproj(302,5): error : This project references NuGet package(s)
that are missing on this computer. Enable NuGet Package Restore to download 
them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. 
The missing file is ..\packages\CodeContracts.MSBuild.1.7.10908.1101-beta\build\CodeContracts.MSBuild.targets.

    0 Warning(s)
    1 Error(s)

如果您想自定义错误消息,请在文本编辑器中打开.csproj文件并修改目标EnsureNuGetPackageBuildImports。添加安装CodeContracts包所需的特定步骤可能是个好主意。