пользовательский файл .targets не работает - PullRequest
1 голос
/ 02 марта 2011

Я создал пользовательский файл .targets, как показано ниже (только что добавил все общие задачи, необходимые в файле myproj.vcxproj, в файл .targets)

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!-- *******************************************************************************************
        Common tasks
       ******************************************************************************************* -->

  <Target Name="H1">
    <Exec Command="del /F/Q @(S_PACK_H1)" />
    <RemoveDir Directories="@(D_PACK_H1)" />
  </Target>
  <Target Name="H2">
    <Exec Command="del /F/Q @(S_PACK_H2)" />
    <RemoveDir Directories="@(D_PACK_H2)" />
  </Target>
  <Target Name="H11">
    <Exec Command="del /F/Q @(S_PACK_H11)" />
    <RemoveDir Directories="@(D_PACK_H11)" />
  </Target>

</Project>

Все макросы / массивы, такие как S_PACK_H1, D_PACK_H11, являютсяопределяется в файле myproj.vcxproj, после чего я импортирую его в файл myproj.vcxproj, как показано ниже

  <Import Project="C:\Program Files\MSBuild\MyCompany\Mycustom.targets" />

, когда я использую приведенный ниже cmd

msbuild myproj.vcxproj / t: H11

выдает ошибку "ошибка MSB4057: цель" H11 "не существует в проекте"

, но если у меня такой же список задач в файле .vcxproj вместо файла .targets, то онотлично работает.

  1. Можно ли определить макросы в файле .vcxproj и использовать их в файле .targets?Сможет ли MSBuild получить это определение / значение?Если нет, то как мне использовать / передать что-то, определенное в файле vxcproj в файле .targets?

  2. Почему msbuild не может увидеть мою задачу, если она находится в файле .targets Vsфайл .proj?что еще мне нужно сделать?

1 Ответ

0 голосов
/ 03 марта 2011

Нет очевидных причин, чтобы это не сработало. Да, вы можете определить цели в импортированном файле, и они должны быть доступны, независимо от того, где происходит импорт. Если вы используете MSBuild 4.0 (в вашем файле .targets нет атрибута ToolsVersion выше, поэтому я не уверен), то вы можете сгенерировать полностью предварительно обработанный файл, например:

> msbuild mproj.vcxproj /pp

Найдите предварительно обработанный файл в той же папке. Откройте его в текстовом редакторе и найдите импортированный контент, он должен быть там. Если нет, то, возможно, предварительно обработанный файл может пролить свет на то, что идет не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...