2011-01-10 2 views
2

Я создаю веб-приложение .net и выполняю некоторые задачи сборки, например задачу копирования msbuild. Я добавляю это, редактируя файл проекта для приложения и добавляя задачу.внешний файл для задач сборки

Хотя это работает нормально, можно ли каким-либо образом использовать внешний файл xml в файле проекта и иметь в нем мои задачи сборки с основным файлом проекта, ссылающимся на него? Я бы предпочел это, так как тогда мне не пришлось бы редактировать основной файл проекта, и между файлом проекта и задачами сборки будет разделение.

+0

Возможный дубликат [задачи MSBuild для выполнения внешнего файла MSBuild] (http://stackoverflow.com/questions/1501930/msbuild-task-to-execute-an-external-msbuild-file) –

ответ

1

Вы можете просто ссылаться на любой внешний проект или целевой файл путем добавления 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 с более подробным примером.

+0

Спасибо за вашу помощь с этим. Могу ли я создать внешний XML-файл с аналогичной настройкой до файла проекта, т.е. и т.д. Отсюда я могу ссылаться на мои сборки задачи, PARAMS питания и т.д. – amateur

+0

@Niall: Да, вы можете создать внешний файл XML с любым 'Target' и' Task', которые предлагает MSBuild (или расширения) ... но это похоже на то, что вы больше поработали с чем-то, что улучшилось бы с другим подходом. Дополнительную информацию см. В моем обновленном ответе. – Filburt

1

Вы можете вызвать msbuild.exe, нацелив ваш отдельный файл сборки, в событие предварительной сборки или после сборки.

Смежные вопросы