Благодаря этой замечательной статье Нейта Макмастера, Я знаю, как упаковать основное консольное приложение .NET в виде пакета Nuget, который автоматически устанавливает себя как (предварительно, в данном случае) задачу сборки.
Чтобы проверить, все ли работает, я просто заставил свой собственный инструмент написать общедоступный класс C#.
Вот полный и работоспособный образец на Github.
Однако файл, который добавляет мой пользовательский инструмент, на самом деле не является частью сборки (первый, который фактически создает файл), и поэтому представленный класс не находится в сборке после первой сборки (см. Строка 38 здесь). Однако, поскольку основные проекты .NET теперь автоматически включают все файлы .cs вместе с проектом, новый класс встраивается в выходные данные последующих сборок (см. строку 57 здесь).
Однако сгенерированные файлы не удаляются при очистке и, как правило, не ведут себя так, как выводит задача MSBuild. Однако, поскольку exec происходит в целевом файле, мы должны иметь доступ ко всем механизмам, чтобы это произошло. Итак, мой вопрос:
Как мне правильно запустить пользовательский инструмент сборки (консольное приложение), который должен проверить проект, его файлы и сгенерировать исходный код (предпочтительно в obj/, например, <foo>.g.cs
, который компилируется в результирующую сборку как часть одной сборки? В идеале, эти сгенерированные файлы также не должны отображаться в обозревателе решений.
Помощь!
UsingTask
, задача MSBuild со своим собственным набором проблем, см. здесь: natemcmaster.com/blog/2017/11/11/msbuild-task-with-dependencies Я хотел бы сделать это с помощью консольного приложения + клей MSBuild, содержащий Исполнительный звонок. - person Ani   schedule 25.04.2019