Пользовательская цель сборки Delphi XE всегда отключена

182

Я создал собственный файл MSBuild .targets, который я включил в проект Delphi XE через IDE и включил его из контекстного меню Project Manager. Несмотря на то, что файл проверяется, он всегда отключается после повторного сохранения файла проекта.

Здесь приведен упрощенный вариант файла целей с именем Custom.targets.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="Hello">
    <Message Text="Hello from custom target"/>
  </Target>
</Project>

В качестве самостоятельного файла это работает так, как ожидалось: набрав...

MSBuild Custom.target /t:Hello

... в командной строке отображается ожидаемое сообщение.

Добавление Custom.targets в проект Delphi через IDE отображает файл в Менеджере проектов, как ожидалось, а файл .dproj теперь содержит строку...

<TargetsFile Include="Custom.targets"/>

Я щелкнул правой кнопкой мыши файл в диспетчере проектов IDE и выбрал Enable. Но когда проект построен, появится окно сообщения Build:

[MSBuild Warning] Custom.targets(1): Игнорирование отключенного импорта: PathToProjectSource\\Custom.targets

При щелчке правой кнопкой мыши в диспетчере проектов по-прежнему отображается параметр Enable вместо ожидаемого Disable.

В командной строке MSBuild ProjectName.dproj /t:Hello также терпит неудачу.

Я попытался взломать файл .dproj, чтобы добавить строку...

<Import Project="Custom.targets"/>

Теперь печатается MSBuild ProjectName.dproj /t:Hello. Но в следующий раз, когда я сохраню файл проекта из IDE, оператор <Import> будет удален.

Кто-нибудь понял, что происходит неправильно?

  • 10
    В вашем примере использования msbuild из командной строки вы показываете Custom.target, в то время как везде вы используете Custom.targets . Что он?
  • 4
    Хорошее место - я не заметил этого, несмотря на то, что много смотрел на код. Я не могу добраться до машины с Delphi в течение нескольких дней (в больнице!), Но попробую код, используя «target» или «target», когда смогу.
Показать ещё 2 комментария
Теги:
msbuild
delphi-xe

1 ответ

1

Delphi генерирует весь контент dproj, и этот пользовательский импорт всегда будет удален.

Вы можете написать свои собственные XML файлы msbuild, но dproj принадлежит Delphi.

Если у вас нет исходного кода или вы хотите обезьянную патч, вы не можете это сделать.

Если вам действительно нужен гибкий способ xml для создания проектов delphi и создания целей в изобилии, попробуйте хотите или хотите vnext (моя вилка на битбакете)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню