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

Str*_*Lev 5 msbuild azure web-deployment

我有一个带有Web作业“ WebJob1”的Web应用程序“ WebApplication2”(Azure API)。我想将应用程序和网络作业打包到一个zip文件中,以便将该包部署到云中。当我通过Visual Studio(发布-> Web部署程序包)进行操作时,它就像一个魅力。但是,当我尝试通过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
Run Code Online (Sandbox Code Playgroud)

输出:

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]
Run Code Online (Sandbox Code Playgroud)

你知道我在做什么错吗?

顺便说一句,每个项目(应用程序和webjob)的编译分别与MSBuild一起工作。

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

小智 1

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

我在复制过程中的原始路径是这样的:

Copying C:\Test\Portal.WebApp\build\Package**\*.* to obj\Release\Package\PackageTmp\app_data\jobs\triggered\PortalWebJob\*.*
Run Code Online (Sandbox Code Playgroud)

我认为问题出在这部分。

Package**\*.*
Run Code Online (Sandbox Code Playgroud)

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

settings.WithProperty("OutputPath", MakeAbsolute(packageDir).ToString() + "/");
Run Code Online (Sandbox Code Playgroud)

这似乎解决了我的问题,我知道您可能没有使用 Cake 脚本,但希望这可以引导您走向正确的方向。