2014-10-17 115 views
0

我的csproj用Code Contracts定义了一个构建配置'Debug-plus'。如果未安装代码合同,会发生什么情况?

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

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

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

+0

https://www.nuget.org/packages/CodeContracts.MSBuild/ – 2014-10-17 10:48:14

+0

我在StackOverflow上回答了这个问题的可能的重复:[我可以在代码中留下合同,与非合并使用的代码库合并代码合同开发者?](http://stackoverflow.com/questions/25627419/can-i-leave-contracts-in-code-that-im-merging-with-a-codebase-used-by-non-code ) – fourpastmidnight 2016-03-01 14:12:05

回答

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包所需的特定步骤可能是个好主意。

+0

你的csproj文件是什么?我没有使用Nuget。 – 2014-10-17 15:48:01

+0

@ColonelPanic,我的答案仅适用于将CodeContracts作为Nuget包安装的情况。很抱歉混淆。 – 2014-10-17 15:56:12

相关问题