使用Web作业编译和打包azure Web应用程序时出现“路径中的非法字符”错误

时间:2017-05-24 06:32:27

标签: azure msbuild web-deployment

我有一个带有Web作业“WebJob1”的Web应用程序“WebApplication2”(Azure API)。我想将应用程序和Web作业打包到一个zip文件,以便将软件包部署到云端。当我通过visual studio(Publish - > web deploy package)进行操作时,它就像一个魅力。但是,当我尝试通过MSBuild(为了自动化目的)这样做时,我收到此错误: 命令:

C:\Program Files (x86)\MSBuild\14.0\Bin>MSBuild.exe "C:\Users\levs\Documents\Visual Studio 2015\Projects\WebApplication2\WebApplication2\WebApplication2.csproj" /p:OutputPath="C:\Users\levs\Documents\webPublish\MSBuildOutputPath" /p:DeployOnBuild=true /p:PackageLocation=C:\Users\levs\Documents\webPublish\test.zip /verbosity:m

输出:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.targets(2606,5): error : Copying file C:\Users\levs\Documents\webPublish\MSBuildOutputPath**\*.* to obj\Debug\Package \PackageTmp\app_data\jobs\continuous\WebJob1\*.* failed. Illegal characters in path. [C:\Users\levs\Documents\Visual Studio 2015\Projects\WebApplication2\WebApplication2\WebApplication2.csproj]

你知道我做错了什么吗?

BTW,每个项目(应用程序和webjob)的编译与MSBuild分开工作。

MSBuild版本:Microsoft(R)Build Engine版本14.0.25420.1

2 个答案:

答案 0 :(得分:1)

不确定您使用什么来编写自动化脚本,但我在使用我的Web作业使用Cake中的MSBuild时遇到了类似的问题。希望这可以帮助其他任何偶然发现同样问题的人。

我在副本中的原始路径是:

Copying C:\Test\Portal.WebApp\build\Package**\*.* to obj\Release\Package\PackageTmp\app_data\jobs\triggered\PortalWebJob\*.*

我认为这个问题与这一部分有关。

Package**\*.*

为了解决这个问题,我在输出路径的末尾添加了斜杠。

settings.WithProperty("OutputPath", MakeAbsolute(packageDir).ToString() + "/");

这似乎解决了我的问题,我知道你可能没有使用Cake脚本,但希望这可能会引导你朝着正确的方向发展。

答案 1 :(得分:0)

我通过查找失败的MSBuildOutputPath值,将其复制,添加斜杠,然后将新字符串指定为OutputPath参数来解决了这个问题。

因此,如果给我的错误输出是“ C:/ myDesiredOutputPath / bin”,则我需要指定MSBuild应该使用“ C:/ myDesiredOutputPath / bin /”加上斜杠。

msbuild /p:OutputPath=C:/myDesiredOutputPath/bin/

This answer可能会有所帮助。