Могу ли я использовать .NET 4 Code Contracts и оставаться совместимым с .NET 3.5?

.NET 4 представил Кодовые контракты как новую функцию. Я хотел бы использовать CC, но предоставить файлы, которые все еще могут работать в версии 3.5 SP1. Это возможно? Могу ли я использовать только части новой функциональности? По-видимому, CC может делать только статические проверки, не будучи включенными в двоичные файлы, верно?

Я знаю, что CC был доступен для 3.5 в качестве отдельного модуля, является ли это возможным обходным решением, если я не могу использовать 4 версию CC? Есть ли разница в наборе функций?

Ответ 1

Я бы хотел использовать CC, но предоставить файлы которые все еще могут работать в версии 3.5 SP1. В том, что возможно?

Вы не можете использовать .NET 4.0 CC, но вы можете использовать Microsoft.Contracts.dll, который является сборкой 3.5 CC.

По-видимому, возможно иметь CC выполнять статические проверки без включенная в двоичные файлы, заключается в том, что правильно?

Да. Премиум-версия включает в себя статическую проверку, но вам нужна VS2008 Team System или VS2010 Premium/Ultimate для использования Code Contracts Premium Edition.

Я знаю, что CC был доступен для 3.5 как отдельный модуль, это возможно обходной путь в случае, если я не могу использовать 4 версия CC?

Да, он по-прежнему доступен. Получите его от http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx

Ответ 2

Да, вы можете использовать Code Contracts с .NET 3.5 (но вы разумно разрабатывать с Visual Studio 2010, чтобы получить поддержку инструментария). Просто скачайте MSI с веб-сайта "Кодовые контракты" , установите и скопируйте библиотеки DLL с C:\Program Files (x86)\Microsoft\Contracts\Contracts\v3.5 в свое решение и укажите Microsoft.Contracts.dll явно в все проекты, которые его используют.

Если вы привязаны к более ранней версии Visual Studio, чем к 2010 году, или к версии 2010, которая не имеет поддержки Code Contract, вы можете выполнить ccrewrite.exe, ccrefgen.exe и ccdocgen.exe (находится в C:\Program Files (x86)\Microsoft\Contracts\Bin) из командной строки в качестве post build event.