В файле TFSBuild.Proj как <ConfigureToBuild>для AnyCPU и платформы x86? - PullRequest
1 голос
/ 18 ноября 2011

У меня есть один MyProject.sln проект.

В этом случае существует два проекта библиотеки классов и один проект службы окон .

Сборка компилятора Проекты библиотеки классов на любом процессоре Платформа и Проект службы Windows. Сборка на платформе X86 .

Как установить так, чтобы My Build выполнялся в соответствии с выбранной платформой, которую я установил в файле проекта "MyProjectClass.csproj"

Это код файла TFSBuild.Proj

 <SolutionToBuild Condition="'$(BuildMyProject)'=='True'"
       Include="$(SolutionRoot)/MyProject/MyProject.sln">
      <Targets>Build</Targets>
      <Properties></Properties>
    </SolutionToBuild>

код для

$ BuildFlavor = 'Release'

     <ConfigurationToBuild Include="$(BuildFlavor)|Any CPU">
          <FlavorToBuild>$(BuildFlavor)</FlavorToBuild>
          <PlatformToBuild>Any CPU</PlatformToBuild>
        </ConfigurationToBuild>
<ConfigurationToBuild Include="$(BuildFlavor)|x86">
          <FlavorToBuild>$(BuildFlavor)</FlavorToBuild>
          <PlatformToBuild>x86</PlatformToBuild>
        </ConfigurationToBuild>

MSBuild попытайтесь собрать мой MyProject.sln для обеих платформ. это займет больше времени для сборки. Это показывает, что Build Run успешно, но не генерирует двоичные файлы службы Windows в указанном $ DropLocation.

Но

Когда я изменил свой проект Windows Service Build Platform с x86 на Любой ЦП. Теперь он работает должным образом. Сгенерированы все три бинарных файла проекта, и я получил его в своем $ DropLocation Но

[1] Есть ли другой способ решить этот запрос?

[2] TFSBuild выполняет только одну платформу для компиляции MSBuild?

[3] Требуется ли, чтобы все платформы подпроектов были одинаковыми для одного проекта .sln?

Ответы [ 2 ]

1 голос
/ 21 ноября 2011

Измените свое решение таким образом и измените значение ConfigurationToBuild на:

<ConfigurationToBuild Include="$(BuildFlavor)|Mixed Platforms">
  <FlavorToBuild>$(BuildFlavor)</FlavorToBuild>
  <PlatformToBuild>Mixed Platforms</PlatformToBuild>
</ConfigurationToBuild>

Если у вас нет прав на изменение файла решения, попробуйте следующие идеи:

  1. Создание определенных проектов из решения с определенной целью
  2. Попробуйте дополнительные метаданные свойства
  3. Создание * .csproj файлов вместо файла решения
  4. Создайте свои проекты, используя задачи MSBuild (переопределите цель сборки)
0 голосов
/ 04 апреля 2017

У меня была похожая проблема - TFSBuild был настроен так, что он всегда выбирал конфигурацию Debug , и у меня не было разрешений для изменения определения сборки.Я хотел, чтобы в сборке TFS была создана конфигурация Release .

Мое решение состояло в том, чтобы редактировать файлы * .csproj.

Необходимое условие для этогоявляется то, что поле Configuration пусто в параметрах процесса сборки соответствующего определения сборки TFS (Процесс / Элементы для сборки / Конфигурации для сборки).Если у вас есть права на его изменение, вы можете напрямую выбрать нужную конфигурацию, сохранить определение сборки и пропустить шаги, описанные ниже.

Шаги для обхода проблемы (щелкните правой кнопкой мыши по проекту):

  1. Выгрузить проект
  2. Редактировать проект

Теперь вы можете редактировать файл проекта.Найдите

    <PropertyGroup>
            <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
            <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>

и измените его на

    <PropertyGroup>
            <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
            <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>

Наконец, снова щелкните правой кнопкой мыши по проекту и выберите:

Загрузить проект

Теперь поставьте в очередь новую сборку, и она должна создать ее из Release.Кроме того, вы можете ввести любую другую конфигурацию, которая вам нравится, например, вы можете создать Release_TFS в Visual Studio и затем вставить ее вместо Release.Это гарантирует, что вы создали отдельное определение для TFSBuild, прежде чем сделать это.

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