2014-10-17 117 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

相關問題