Если вы обновляете проект .NET 3.5, использующий контракты, до .NET 4.0, обязательно удалите ссылку на сборку Microsoft.Contracts
.
Сборка Microsoft.Contracts
предоставляет контракты кода для использования в проектах .NET 2.0 или 3.5, но по умолчанию поставляется с .NET 4.0 в mscorlib
, поэтому вам это не нужно. Они оба разделяют пространство имен System.Diagnostics.Contracts
, поэтому, имея ссылки на оба одновременно, компилятор не может определить, какое из них вы пытаетесь использовать.