Развертывание Azure ASP.NET 5: невозможно выполнить операцию (создать каталог)

Это очень похоже на ERROR в веб-приложении Azure. Развертывание пакета msdeploy

Я запускаю msbuild /t:packagepublish для автоматизации развертывания с использованием шаблонов ARM. Соответствующая часть шаблона:

    "resources": [
    {
        "name": "MSDeploy",
        "type": "extensions",
        "location": "[resourceGroup().location]",
        "apiVersion": "2015-08-01",
        "dependsOn": [
            "[concat('Microsoft.Web/sites/', variables('webAppName'))]"
        ],
        "tags": {
            "displayName": "webDeploy"
        },
        "properties": {
            "packageUri": "[concat(parameters('_artifactsLocation'), '/', parameters('webDeployPackageFolder'), '/', parameters('webDeployPackageFileName'), parameters('_artifactsLocationSasToken'))]",
            "dbType": "None",
            "connectionString": "",
            "setParameters": {
                "IIS Web Application Name": "[variables('webAppName')]"
            }
        }
    }
]

Это завершается ошибкой, связанной с отсутствием свойства под названием «Имя веб-приложения IIS», и я вижу из сгенерированного файла пакета, что действительно нет parameters.xml, как это было бы для ASP.NET 4 шаблон.

Удаление этого оставляет меня с ошибкой:

Невозможно выполнить операцию ("Создать каталог") для указанного каталога ("C:\Users\Jim\AppData\Local\Temp\PublishTemp\API78\wwwroot").

так ясно, что он пытается воспроизвести локальную структуру каталогов. В чем я не уверен, так это в том, как/где решить эту проблему.

Я вижу переключатель msdeploy -declareParam, но я вызываю msbuild, а не msdeploy. Я надеюсь, что есть способ сделать это в расширении шаблона, но я не могу найти какую-либо документацию о том, что/как указывать там значения.

Это использует шаблоны сборки в C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0.


person Jim O'Neil    schedule 10.05.2016    source источник


Ответы (1)


Не уверен, что это полностью применимо, но недавно я писал в блоге об использовании SetParameters через MSBuild.

https://dotnetcatch.com/2016/04/27/setparameters-via-msbuild-commandline/

Резюме: SetParams — это ItemGroup. Команда MSBuild.exe не поддерживает предоставление только свойств ItemGroups. Я добавил некоторый скрипт MSBuild, чтобы принять свойство и преобразовать его в ItemGroup, установив таким образом параметры.

person chief7    schedule 11.05.2016
comment
Это выглядит многообещающе... разочаровывает, что это «просто работает» для ASP.NET 4.5; в качестве альтернативы, возможно, стоит вызвать msdeploy отдельно. - person Jim O'Neil; 11.05.2016
comment
В большинстве случаев я определенно предпочитаю использовать MSDeploy отдельно. Эта запись в блоге была обходным путем для других с конкретным вариантом использования инициирования развертывания из MSBuild. - person chief7; 11.05.2016