Вы можете просто ссылаться на любой внешний проект или целевой файл путем добавления import
в основной файл проекта:
...
<!-- this is the default import for (c#) web project files -->
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" />
<!-- import your custom project/target file here -->
<Import Project="MyCustom.targets" Condition="Exists('MyCustom.targets')" />
...
Добавление Condition
позволит построить свой основной проект, даже если ваш пользовательский проект/целевой файл отсутствует, потому что сборка выполняется в другой среде.
Я использую этот подход для запуска целей FxCop и StyleCop на своей локальной машине, но тот же основной файл проекта можно создать без каких-либо изменений в моей промежуточной среде.
Update
Ваш комментарий говорит о том, что вы на самом деле ищете, а решение, которое должно работать наоборот: Вы хотите выполнить несколько шагов до и после того, как строить свой проект без изменения проекта самой конфигурации.
В этом случае лучший способ - создать свой собственный проект, чтобы вызвать сборку вашего веб-проекта. Это может выглядеть примерно так:
<Project DefaultTargets="MyTargetAfterBuild">
<!-- some Project attributes omitted for readability -->
<Target Name="MyTargetBeforeBuild" ContinueOnError="false">
<Exec Command="svn export" />
</Target>
<Target Name="Build" DependsOnTargets="MyTargetBeforeBuild">
<MSBuild Projects="MyWebProject.csproj" Targets="Build" Properties="Configuration=Release" >
</MSBuild>
</Target>
<Target Name="MyTargetAfterBuild" DependsOnTargets="Build">
<Exec Command="powershell.exe .\MyCustomScript.ps1" />
</Target>
</Project>
Вы могли бы быть заинтересованы в this answer on a similar scenario с более подробным примером.
Возможный дубликат [задачи MSBuild для выполнения внешнего файла MSBuild] (http://stackoverflow.com/questions/1501930/msbuild-task-to-execute-an-external-msbuild-file) –