Публиковать службу WCF (или веб-приложение ASP.NET) с помощью командной строки

Я хотел бы симулировать пункт меню "Опубликовать..." из контекстного меню проекта WCF Service (или ASP.NET Web Application или...) в Visual Studio 2008. Мне не нужно публиковать его на запуская экземпляр IIS, просто чтобы связать веб-контент с папкой bin в каком-то локальном каталоге. Есть ли способ добавить его в события пост-сборки или в качестве задачи MSBuild?

Ответ 1

Вот ответ, благодаря этой ссылке: http://codingcockerel.co.uk/2008/05/18/how-to-publish-a-web-site-with-msbuild/ Итак, я только что изменил файл .csproj веб-приложения и написал это в TargetBuild target (он уже был там):

<Target Name="BeforeBuild">
    <Message Text="##############Before build##################" Importance="high"/>
    <RemoveDir Directories="publish"
        ContinueOnError="true"/>
</Target>
<Target Name="AfterBuild">
    <Message Text="##############After build##################$(OutputFolder)" Importance="high"/>
    <MSBuild Projects="$(ProjectName).csproj"
           Targets="ResolveReferences;_CopyWebApplication"
           Properties="WebProjectOutputDir=publish\;OutDir=publish\bin\" />
</Target>

Ответ 2

Вы должны написать команду xcopy, чтобы скопировать нужные вам файлы в нужное место. У Microsoft есть статья о xcopy для asp.net.

После правильной команды вы можете поместить ее в действия Post Build, чтобы она автоматически запускалась после сборки.

Также см. VS Post Build Event для примеров копирования только вывода dll (обратите внимание на использование $(TargetPath) и $(TargetDir)).

Ответ 3

HI, Вы должны взглянуть на Проекты веб-развертывания. Это файлы MSBuild с поддержкой GUI Visual Studio. Они будут предварительно компилировать ваш сайт. Вы можете расширить их поведение, чтобы скопировать сгенерированные файлы на ваш веб-сервер.

Сказал Ибрагим Хашими

Моя книга: Внутри Microsoft Build Engine: использование MSBuild и Team Foundation Build