Я ссылаюсь на этот ответ (выделено мной):
Посмотрите на атрибуты ContractClass и ContractClassFor. Это позволяет писать классы с кодовыми контрактами в отдельных сборках. Это позволяет вам иметь контракты, доступные для разработки, не загромождая ваш код, и также означает, что вам не нужно развертывать контракты с живым кодом
Почему вы не хотите развертывать контракты?
Являются ли контракты, с точки зрения передовой практики, строго для разработки и контроля качества?