我正在尝试通过GitHub和kudu进行SCM集成部署,使用预编译视图,并将所有内容合并到一个单独的程序集中。
请注意:
- 禁用预编译后,部署可以正常工作。
- 从Visual Studio进行部署也可以正常工作。
- 如果我从Azure日志中复制msbuild命令,替换相关路径,并在我的Windows 8.1机器上本地运行,构建也可以正常工作。
- 不允许预编译站点可更新
- 不发出调试信息
- 将所有页面和控件输出合并到一个单独的程序集中=AppViews.dll
[config]
project = WebSite/WebSite.csproj
SCM_BUILD_ARGS=/p:Configuration=Release;PublishProfile=azure-prod /v:n
你注意到我正在发送冗长性
/v
以获得额外的诊断信息。以下是部署日志末尾提供的信息:
AspNetPreCompile:
D:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v \ -p D:\home\site\repository\WebSite\obj\Release\AspnetCompileMerge\Source -c D:\home\site\repository\WebSite\obj\Release\AspnetCompileMerge\TempBuildDir
GenerateAssemblyInfoFromExistingAssembleInfo:
Creating directory "obj\Release\AssemblyInfo".
D:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe /out:obj\Release\AssemblyInfo\AssemblyInfo.dll /target:library Properties\AssemblyInfo.cs
AspNetMerge:
Running aspnet_merge.exe.
D:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\aspnet_merge.exe D:\home\site\repository\WebSite\obj\Release\AspnetCompileMerge\TempBuildDir -w AppViews.dll -copyattrs obj\Release\AssemblyInfo\AssemblyInfo.dll -a
aspnet_merge : error 1003: The directory 'D:\home\site\repository\WebSite\obj\Release\AspnetCompileMerge\TempBuildDir' does not exist. [D:\home\site\repository\WebSite\WebSite.csproj]
Done Building Project "D:\home\site\repository\WebSite\WebSite.csproj" (Build;pipelinePreDeployCopyAllFilesToOneFolder target(s)) -- FAILED.
Build FAILED.
似乎aspnet_compiler.exe正在运行,但并没有按照它应该做的来,这也就是为什么TempBuildDir目录(预期为编译器的输出)在AspNetMerge目标执行之前不存在的原因。与我的系统相比,那个目录确实存在,包含着aspx/ascx等标记文件、静态内容、PrecompiledApp.config文件以及bin目录中的一大堆东西。
aspnet_compiler.exe有一个-errorstack标志,但我不清楚如何让MSBuild通过.deployment文件添加这个标志,甚至不确定该应用程序是否真的会抛出错误。
我可以通过Visual Studio进行部署,但我希望利用SCM集成,这样我只需要将代码推送到生产分支即可。有什么建议吗?