2010-08-17 1 views
3

방금 ​​Visual Studio 2010으로 업그레이드하고 코드 계약 msi를 설치했습니다. 내가 그것을 사용하려고하면 system.diagnostics.contracts.contract dll이 v3.5 및 v4 프레임 워크 모두에 존재한다는 컴파일러 오류가 발생합니다. 누구든지이 문제를 해결하기 위해 무엇을해야하는지 알고 있습니까? 감사.system.diagnostics.contracts.contract가 v4.0 v3.5에 모두 있음

+1

정확한 내용은 무엇입니까? – SLaks

+0

+1 'System.Diagnostics.Contracts.Contract'형식이 'c : \ Program Files \ Microsoft \ Contracts \ Contracts \ v3.5 \ Microsoft.Contracts.dll'및 'c : \ Program Files \ Reference 어셈블리 모두에 있습니다. \ Microsoft \ Framework \ .NETFramework \ v4.5 \ mscorlib.dll ' –

답변

10

계약서를 사용하는 .NET 3.5 프로젝트를 .NET 4.0으로 업그레이드하려면 Microsoft.Contracts 어셈블리에 대한 참조를 제거해야합니다.

Microsoft.Contracts 어셈블리는 .NET 2.0 또는 3.5 프로젝트에서 사용할 코드 계약을 제공하지만 기본적으로 .NET 4.0을 mscorlib에 제공하므로 필요하지 않습니다. 둘 다 System.Diagnostics.Contracts 네임 스페이스를 공유하므로 동시에 두 가지에 대한 참조를 가짐으로써 컴파일러는 어느 것을 사용하려고하는지 알 수 없습니다.

+0

모든 프로젝트에서 참조를 제거했지만 VS가 여전히 같은 오류를 보여줍니다 ... 이유를 모르겠습니다 ... 제거, 정리 -> 다시 빌드 - > 같은 결과 .. – Legends

0

먼저 설치하여 해결했습니다. 실제로 해결하지 못했습니다. 그런 다음 참조를 제거한 다음 프로젝트 버전을 4.5로 변경 한 후 작동했습니다.