Могу ли я использовать .NET 4 Code Contracts и оставаться совместимым с .NET 3.5? - PullRequest
10 голосов
/ 08 апреля 2010

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

Ответы [ 2 ]

4 голосов
/ 25 августа 2010

Да, вы можете использовать Code Contracts с .NET 3.5 (но вы должны разрабатывать с Visual Studio 2010, чтобы получить поддержку инструментов). Просто скачайте MSI с веб-сайта Code Contracts , установите и скопируйте библиотеки 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) из командной строки как событие после сборки .

4 голосов
/ 17 апреля 2010

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

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

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

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

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

Даэто все еще доступно.Получите это от http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx

...