我有一个带有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
答案 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可能会有所帮助。