Как исключить один проект из нескольких проектов из одного решения во время сборки с помощью MSBuild в командной строке? [Дубликат]

Первая строка вхождения «foo» будет заменена на «bar». И вы можете использовать вторую строку для проверки.

grep -rl 'foo' . | xargs sed -i 's/foo/bar/g'
grep 'foo' -r * | awk -F: {'print $1'} | sort -n | uniq -c
27
задан Enrico Campidoglio 17 October 2015 в 08:48
поделиться

2 ответа

Вы можете исключить проекты на уровне решения для конкретной конфигурации build с помощью диалога Configuration Manager в Visual Studio:

Configuration Manager Dialog [/g3]

Затем вы можете просто вызвать msbuild в файле решения , указав конфигурацию сборки для использования:

msbuild /property:Configuration=Release MySolution.sln
47
ответ дан Enrico Campidoglio 22 August 2018 в 11:12
поделиться
  • 1
    Это не помогает :( – Andrew Lubochkn 20 March 2012 в 11:26
  • 2
    Выберите Release в качестве конфигурации решения, установите для всех конфигураций проекта значение Release и снимите флажок Build для Tdi.Origami.IndexUpdaterServiceSetup – The Chairman 20 March 2012 в 20:00
  • 3
    Да, это работает и на меня. Это должно быть отмечено как ответ на самом деле. – Tamas Ionut 14 March 2014 в 11:21
  • 4
    Это сработало для меня, но мне пришлось указать свойство Platform в командной строке MSBuild. – yoyo 21 April 2014 в 19:34
  • 5
    Есть ли способ исключить проект из сборки в командной строке? – Bat_Programmer 16 June 2017 в 05:28

Решение, предлагаемое Enrico, является самым универсальным решением, которое будет работать всегда. Альтернативным решением может быть использование задачи <MSBuild>. Это будет работать для вас, если у вас есть весь файл проекта в определенном каталоге или вы сможете легко перечислить все проекты, которые вы хотите построить (т. Е. Количество проектов в вашем решении не очень велико).

Например, этот файл msbuild будет строить каждый проект под вашим текущим каталогом, за исключением конкретного проекта:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <ItemGroup>
    <MyProjectReferences Include="**\*.*proj" />
    <MyProjectReferences Exclude="Utilities\DTS Indexing Service\Tdi.Origami.IndexUpdaterServiceSetup\Tdi.Origami.IndexUpdaterServiceSetup.wixproj" />
  </ItemGroup>

  <Target Name="BuildAllExceptWixProject">
    <MSBuild Projects="@(MyProjectReferences)" Targets="Build" />
  </Target>

</Project>

Затем вы можете построить это с помощью командной строки msbuild <myproject> /t:BuildAllExceptWixProject

11
ответ дан seva titov 22 August 2018 в 11:12
поделиться
  • 1
    Вы были правы. Но не ProjectReferences , но ProjectReference . И Include является необходимым свойством для элемента ProjectReference , поэтому я помещаю Include / Exclude в тот же элемент. И это работает! Проект был успешно исключен. Спасибо!! – Andrew Lubochkn 21 March 2012 в 23:12
  • 2
    @LubochknAndrew, имя группы может быть любым допустимым именем XML-элемента. Группа ProjectReference только одна из групп, которая уже используется в стандартных целях Microsoft, что не делает это имя лучше, чем любое другое имя, о котором вы можете думать. Обратите внимание: в моем ответе не используются стандартные объекты Microsoft. – seva titov 16 June 2016 в 20:26
Другие вопросы по тегам:

Похожие вопросы: