Как заставить MSBuild очистить или перестроить?
Я использую MSBuild из script для компиляции моего проекта. Я заметил, что он просто делает сборку, а не чистую/перестраивает.
У меня есть следующее:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build" ToolsVersion="4.0">
<Target Name="Build">
<MSBuild Projects="$(MSBuildProjectDirectory)\myproj.csproj" Targets="Build" Properties="OutputPath=$(MSBuildProjectDirectory)\..\bin\" />
</Target>
Как принудительно очистить/перестроить?
Ответы
Ответ 1
Изменить
<MSBuild Projects="$(MSBuildProjectDirectory)\myproj.csproj"
Targets="Build"
Properties="OutputPath=$(MSBuildProjectDirectory)\..\bin\" />
к
<MSBuild Projects="$(MSBuildProjectDirectory)\myproj.csproj"
Targets="Clean;Build"
Properties="OutputPath=$(MSBuildProjectDirectory)\..\bin\" />
или
<MSBuild Projects="$(MSBuildProjectDirectory)\myproj.csproj" Targets="Rebuild"
Properties="OutputPath=$(MSBuildProjectDirectory)\..\bin\" />
Подробнее см. в документации MSBuild Task.
Ответ 2
"% windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild" Project.sln /p: Конфигурация = Release/t: Перестроить
Ответ 3
Всегда пытайтесь использовать
<MSBuild Projects="$(MSBuildProjectDirectory)\myproj.csproj"
Targets="Clean;Build"
Properties="OutputPath=$(MSBuildProjectDirectory)\..\bin\" />
Потому что согласно эта статья MSDN, когда у вас есть несколько проектов в вашем решении с использованием "Rebuild" в качестве цели, может привести к строить, чтобы происходить параллельно. Это может вызвать проблемы в зависимостях проекта.
Но когда вы используете "Чистота и сборка" в качестве цели, сборка начнется только после очистки всех проектов.