Благодаря этой замечательной статье Нейта МакМастера, я знаю, как упаковать консольное приложение ядра .NET в пакет Nuget, который автоматически устанавливается в качестве (в данном случае, задачи сборки).
Чтобы проверить, все ли работает, я просто попросил свой инструмент написать публичный класс C #.
Вот полный и работающий пример на Github .
Однако файл, который добавляет мой пользовательский инструмент, на самом деле не является частью сборки (первым, который фактически генерирует файл), и поэтому введенный класс не находится в сборке после первой сборки (см. Строку 38 * 1013). * здесь ). Однако, поскольку базовые проекты .NET теперь автоматически включают все файлы .cs вместе с проектом, он создает новый класс в выходных данных при последующих сборках (см. Строку 57 здесь ).
Сгенерированные файлы не уходят в чистоту, хотя и, как правило, не ведут себя так, как то, что выводит задача MSBuild. Однако, поскольку exec происходит в файле целей, мы должны иметь доступ ко всем механизмам, чтобы это произошло. Итак, мой вопрос:
Как правильно запустить пользовательский инструмент сборки (консольное приложение), который должен изучить проект, его файлы и сгенерировать исходный код (предпочтительно в формате obj /, как, скажем, <foo>.g.cs
, который компилируется в результирующую сборку как часть одиночная сборка? В идеале этот сгенерированный файл (ы) также не должен появляться в обозревателе решений.
Помощь!