2014-10-17 7 views
0

내 csproj는 빌드 구성 'Debug-plus'를 Code Contracts으로 정의합니다.코드 계약이 설치되지 않은 경우 어떻게됩니까?

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

누군가 코드 계약을 설치하지 않고이 구성으로 프로젝트를 빌드하려고하면 어떻게됩니까?

이상적으로는 코드 계약 설치 방법을 설명하는 메시지에 오류가 나타나기를 바랍니다. 최악의 경우는 빌드가 성공할 수 있지만 런타임에 코드 계약을 확인하지 않아도되므로 테스트가 다른 컴퓨터에서 다른 결과를 제공 할 수 있습니다.

+0

https://www.nuget.org/packages/CodeContracts.MSBuild/ –

+0

내가 여기 StackOverflow에서 대답 한이 질문의 가능한 복제본 : [내가 비어있는 사람이 사용하는 코드베이스와 병합하고있는 코드에 계약을 남길 수 있습니까? -code contracts developers?] (http://stackoverflow.com/questions/25627419/can-i-leave-contracts-in-code-that-im-merging-with-a-codebase-used-by-non-code) – fourpastmidnight

답변

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을 사용하지 않고있다. –

+0

@ColonelPanic, 내 대답은 CodeContracts를 Nuget 패키지로 설치하는 경우에만 적용됩니다. 혼란에 대해 죄송합니다. –

관련 문제