Как выполнить ту же функциональность, что и публикация в visual studio из powershell

Я хочу знать, как публиковать из PowerShell так же, как я могу из Visual Studio.

при запуске Visual Studio с проектом MVC, например; затем щелкните правой кнопкой мыши на проекте и выберите "опубликовать"; появится диалоговое окно, которое вы заполните несколько параметров в нажмите Опубликовать снова. Это волшебным образом выталкивает ваш сайт, как и ожидалось. Он также создает файл для хранения этих параметров. имя_проекта.Издавать.XML.

этот файл является причиной, по которой я хочу иметь возможность использовать это точно так же. Существует несколько параметров, которыми можно управлять в powershell, чтобы переместить приложение на несколько сайтов с разными конфигурациями.

Я посмотрел на "MSBuild target: publish", который только производит (запуск из каталога, содержащего.csproj):

MSBUILD : error MSB1009: Project file does not exist.
Switch: target:publish 

я попробовал "MSBuild projectfile target:publish", который производит:

MSBUILD : error MSB1008: Only one project can be specified.
Switch: target:build

Я также рассмотрел несколько вариантов msdeploy. Этого не может быть трудно!? Если вы можете щелкнуть правой кнопкой мыши в studio, есть что-то, что выполняет эту задачу.

Я начинаю задаваться вопросом, если это требует полной луны и отрезать голову курицы. (Я потратил на это много времени!)

**EDIT: я попробовал предложение ли:

msbuild target:publish Mvc.csproj

, который производит эта ошибка:

MSBUILD : error MSB1008: Only one project can be specified.
Switch: Mvc.csproj

For switch syntax, type "MSBuild /help"

**EDIT: из предложения Дэви я попытался:

msbuild target:publish Mvc.csproj

, который производит эта ошибка:

MSBUILD : error MSB1009: Project file does not exist.
Switch: target:publish=PassportHealth.PatientSimple.Mvc.csproj

Я тоже вернулся к документации для цели" опубликовать" (http://msdn.microsoft.com/en-us/library/ms165431.aspx), который кажется довольно ясным, что синтаксис:

msbuild target:publish

Итак, после перечитывания этого несколько раз мой вывод таков: цель публикации-для развертывания одним щелчком мыши .exe-файлы, а не веб-сайты MVC. Я нашел ... http://weblogs.asp.net/scottgu/archive/2010/09/13/automating-deployment-with-microsoft-web-deploy.aspx что говорит об этом дело довольно ясное. Я не вижу, как использовать "публикацию".xml " файл в этом через команду msdeploy все же.

1 ответов


имя_проекта.издавать.xml-файлы используются только через Visual Studio для публикации одним щелчком мыши. Для MSBuild вам нужно передать кучу параметров непосредственно в командной строке (/p: Param1=value1; Param2=value2;...). Например:

/p:DeployOnBuild=True /p:DeployTarget=MsDeployPublish /p:CreatePackageOnPublish=True /p:MSDeployPublishMethod=InProc /p:MSDeployServiceUrl=localhost /p:DeployIisAppPath="Default Web Site/NewOrleansJazz" /p:UserName=domain\user /p:Password=myPassword (источник)

обратите внимание, что в предварительном просмотре VS11 (выпущенном на конференции сборки) есть новый файл, заменяющий имя проекта.издавать.XML-код: MyPublishSettings.pubxml. Этот файл в основном представляет собой комбинацию публикации.xml-файл и имя проекта.АС ТПП.цели свернуты в один (но также разделены для каждого профиля вместо того, чтобы все они были сохранены в публикации.XML, например, файл testsettings.pubxml, ProductionSettings.pubxml), и может использоваться из командной строки проще, используя msbuild MyProject.csproj /t:WebPublish /p:PublishProfile="myProfile"

[edit:] пара заметок re: информация в вашем посте:

  1. ошибка при указании только одного проекта, вероятно, связана с неправильным указанием цели. Другие, чем имя проекта, все параметры, переданные msbuild, начинаются с /, например,/t[arget]:foo /p[roperty]:var=value
  2. цель публикации фактически не связана с веб-публикацией. IIRC, это связано с публикацией приложения OneClick. В VS2010, вы должны использовать /t:build /p:DeployOnBuild=true для веб-проектов использовать задачи публикации (как указано выше). Новое в VS11-это /t:WebPublish, который также принимает более простой набор параметров, а именно .pubxml файл, который вы хотите использовать.
    • дополнительное Примечание: при построении решения файл /t:WebPublish будет выполнена, а цель не определена на уровне решения. Он может использоваться только непосредственно в файле проекта для вашего веб-проекта. Вы все еще можете использовать /p:DeployOnBuild=true на уровне решения, поскольку значение параметра передается каждому строящемуся проекту, но будет игнорироваться любыми проектами, не потребляющими это значение.