Подтвердить что ты не робот

Как сделать ту же функциональность, что и публикация внутри визуальной студии из powershell

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

При запуске Visual Studio с проектом MVC, например; затем щелкните правой кнопкой мыши проект и выберите "Опубликовать" ; появится диалоговое окно, в котором вы добавите несколько параметров в сообщение "Опубликовать" еще раз. Он волшебным образом выталкивает ваш сайт, как ожидалось. Он также создает файл для хранения этих настроек. projectName.Publish.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. Это не может быть так сложно!? Если вы можете щелкнуть правой кнопкой мыши в студии, есть что-то, что выполняет эту задачу.

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

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

msbuild target:publish Mvc.csproj

Что вызывает эту ошибку:

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

For switch syntax, type "MSBuild /help"

** РЕДАКТИРОВАТЬ: Из предложения DaveE я попробовал:

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, который достаточно четко говорит об этом. Я не вижу, как использовать файл "publish.xml" в этом с помощью команды msdeploy пока.

4b9b3361

Ответ 1

Файлы projectName.publish.xml используются только в Visual Studio для публикации One-Click. Для 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 Preview (выпущен на конференции BUILD) появляется новый файл, заменяющий projectName.publish.xml: MyPublishSettings.pubxml. Этот файл представляет собой в основном комбинацию файла publish.xml, а файл projectName.wpp.targets - один (но также разделенный для каждого профиля вместо того, чтобы все они были сохранены в publish.xml, например TestSettings.pubxml, ProductionSettings.pubxml), и может использоваться из командной строки более простым способом, используя msbuild MyProject.csproj /t:WebPublish /p:PublishProfile="myProfile"

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

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