Запускать задачи MsBuild (цели?) после того, как решение построено?

Так как этот вопрос кажется озадаченным/недовольным, я буду перефразировать его частично сформированным представлением о себе.

Могу ли я каким-то образом создать пакетный файл или что-то, что работает после того, как все решение будет построено, и этот командный файл вызовет msbuild для создания определенных целей внутри определенного проекта? Чтобы он работал, мне пришлось бы каким-то образом заставить msbuild построить целевую , независимо от того, считает ли она ее "актуальной" , потому что это основная проблема, с которой я сталкиваюсь.

Ответ 1

Поскольку вы имеете дело со строительством, вы можете захотеть заменить ваш командный файл файлом MSBuild. Например:

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

  <ItemGroup>
    <SolutionsToBuild Include="MySolution.sln"/>

    <Projects Include="Proj1.csproj"/>
    <Projects Include="Proj2.csproj"/>
    <Projects Include="Proj3.csproj"/>
  </ItemGroup>

  <Target Name="BuildAll">

    <!-- Just executes the DefaultTargets (Build) -->
    <MSBuild Projects="@(SolutionsToBuild)"/>

    <!-- Call Rebuild if you think its not building correctly -->
    <MSBuild Projects="@(Projects)"
             Targets="Rebuild"/>

  </Target>
</Project>

Затем вы просто вызываете файл msbuild.exe в этом файле с помощью

msbuild.exe Build.proj /t:BuildAll

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