Как использование контрактов кода в моем веб-проекте повлияет на развертывание? - PullRequest
1 голос
/ 13 мая 2009

Если кодовые контракты используются в приложении, то нужно ли нам устанавливать что-либо (из пакета Code Contracts) на рабочий сервер, например помещать сборки в GAC или запускать инсталляционный пакет контрактов кода на рабочем сервере? *

Или просто положить библиотеки в папку bin будет работать?

Ответы [ 3 ]

1 голос
/ 26 октября 2009

С сайта Code Contracts, указанного в вашем вопросе:

Контракты действуют как проверенная документация ваших внешних и внутренних API. Контракты используются для улучшения тестирование через проверку во время выполнения, включить статическая проверка контракта и генерация документации.

Поправьте меня, если я ошибаюсь, но я думаю, что контракты на кодирование предназначены только для помощи при разработке. Поэтому предполагается, что вы отключите их при компиляции сборок, предназначенных для развертывания / производства.

1 голос
/ 30 ноября 2012

Я понимаю, что это старая ветка, но вопрос все еще актуален ...

Предполагая использование .NET 4.0, классы System.Diagnostics.Contract уже включены в mscorlib.dll. Поэтому все, что вам нужно для установки в любом месте, - это среда выполнения .NET 4.0.

Вам нужно будет только установить пакет CodeContracts на машины разработчика и любые другие машины, которые компилируют ваши двоичные файлы вплоть до IL (то есть через VisualStudio, msbuild с использованием csc.exe - компилятора C # и т. Д.). В этот установочный пакет входит несколько .exes. Одним из них является «ccrewrite.exe». Это переписывающее устройство IL, которое вставляет код IL в ваши сборки после завершения компилятором. Обратите внимание, что ccrewrite и компилятор .NET, которые вы используете для любого используемого вами языка, не связаны, связаны или имеют какие-либо зависимости.

После того, как ваши двоичные файлы скомпилированы, вам не нужно устанавливать или развертывать что-либо на любом из серверов, на которых будет выполняться ваш код. Это верно независимо от параметров, которые вы настроили в настройках проекта:

  • с использованием проверки исполнения контракта
  • с использованием статической проверки контракта
  • настроен для сборки Справочных сборок CodeContract (их также не нужно развертывать).

Ссылочные сборки CodeContract используются только тогда, когда вам нужно представить свои контракты библиотеке / API, находящемуся за пределами вашего решения, и для этого проекта включена статическая проверка. Вам также не следует напрямую ссылаться на них, и вам не требуется какой-либо шаг после сборки, чтобы скопировать их в какую-либо папку bin (кроме случая, который я только что упомянул о предоставлении их другой библиотеке / API).

НТН

1 голос
/ 16 мая 2009

Этого должно быть достаточно, чтобы поместить их в папку bin /.

Сделал что-то подобное несколько недель назад, я скачал пробную версию для механизма построения диаграмм, поместил .dll в мою папку lib и добавил ссылку на них в свой веб-проект.

Мы использовали опцию «Опубликовать» в Visual Studio при развертывании веб-сайта, поэтому мы получили красивую, чистую сборку для загрузки (теперь у нас есть сервер сборки).

Это все работало отлично, пока мы не решили купить компонент, я установил его и добавил все сборки, которые мы переместили / установили в GAC. Я взял сборки и поместил их в нашу папку lib и заново добавил ссылки.

Все у нас работает нормально, пока мы не решили опубликовать обновление проекта с новыми сборками движка чарта. Сайт перестал работать! (

После непродолжительного времени отладки мы обнаружили, что ошибка заключалась в том, что новые DLL-файлы для обработчиков диаграмм не передавались в папку bin, поскольку они находились в GAC. Но когда мы опубликовали на нашем сервере, их там нет, поэтому, чтобы исправить проблему, мы просто скопировали их, и все снова заработало, как чудо.

...