Программно генерировать пользовательский файл msbuild .targets

StackOverflow https://stackoverflow.com/questions/4247965

  •  27-09-2019
  •  | 
  •  

Вопрос

У меня есть библиотека пользовательских задач MSBuild, которые я редактирую довольно регулярно, рефакторинг код, добавляя новые задачи и удаление старых, несуществующих. Становится болью, чтобы редактировать файл .targets, чтобы синхронизировать с тем, что на самом деле в библиотеке, поэтому мне было интересно, какой бы лучший способ автоматизировать это?

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

У меня есть несколько идей о том, как это сделать, но я хотел бы увидеть, что другие придумывают первым. :-)

Это было полезно?

Решение 2

Ну, я нашел более приятный способ достичь этого с помощью Msbuild Community TaskС. TaskSchema задача:

<TaskSchema Assemblies="@(MyTaskAssembly)" 
            OutputPath="%(MyTaskAssembly.RootDir)%(MyTaskAssembly.Directory)" 
            CreateTaskList="true"
            IgnoreMsBuildSchema="true"
            Includes="Microsoft.Build.Commontypes.xsd"/>

Я просто убедитесь, что я импортировал файл msbuild.community.tasks.targets, создать ItemGroup название MyTaskAssembly Содержание всех моих сборок задач (Shocker), затем придерживайтесь вышеуказанного вызова задания в AfterBuild цель моего проекта. Милая! :)

Другие советы

У вас может быть отдельный файл .Targets, содержащий только ссылки на ваши задачи. С одной стороны связать его в основном файле .targets. От другого перезаписи он выполняет некоторую очередную «главную» пользовательскую задачу в вашем AfterBuild цель решения задач. Эта «главная» задача получит все классы, реализующие ITask От недавно созданной сборки и напишите их в файл .targets.
Но быть честным, это выглядит как изложенный для меня. Вы должны отредактировать свой файл .targets в любом случае, чтобы получить использование ваших новых задач. Написание такого «главного» задачи и поддержки его может занять вам больше времени.

Я могу фантазировать несколько более автоматизированных решений, но соображения «вложенного времени» / «время, сохраненное из-за автоматизации», остановить полет моего воображения. знак равно

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top