У меня есть Code Contracts, прекрасно работающий внутри Visual Studio 2010, но я не могу получить ccrewrite.exe
, чтобы сделать что-нибудь полезное из командной строки. Вот пример приложения:
using System.Diagnostics.Contracts;
public class Dummy
{
public static void Main(string[] args)
{
Contract.Requires(args.Length > 0);
}
}
Затем я компилирую код и запускаю ccrewrite.exe на нем:
> csc /debug+ /D:CONTRACTS_FULL Dummy.cs
> ccrewrite /o:RewrittenDummy.exe Dummy.exe
elapsed time: 61ms
Нет файла RewrittenDummy.exe
.
Я пробовал множество вариантов, но ничего не меняя. Несколько замечаний, которые я заметил:
- Он определенно загружает Dummy.exe, потому что, если я укажу несуществующий файл, он умирает
- Dummy.exe определенно содержит ссылки на Contract - если я запустил его без аргументов, он не сработает должным образом (но сообщение об ошибке не было заполнено, как я ожидал бы, если бы оно было переписано)
- Использование постусловий и инвариантов не имеет значения
Я попытался включить предупреждения и многословие, и это совсем не помогает Что я делаю неправильно?
(Также задан как вопрос в форуме Code Contracts. Я сам добавлю соответствующие ответы.)