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