msbuild未同时使用/p:configuration=release和-p:configuration=debug编译

lskq00tm  于 2021-06-24  发布在  Kudu
关注(0)|答案(2)|浏览(597)

我们正在尝试在调试配置中使用kudu在azure上安装kentico(12)最新版本的干净版本。我们通常通过将scm\u build\u args设置为 -p:Configuration=Debug ,一切都很好。但由于某种原因,在这个新版本中,项目无法编译,我看到这是正在运行的命令:

"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" "C:\Users\User\Documents\GitHub\Project\CMS\CMSApp.csproj" /nologo /verbosity:m /t:Build /t:pipelinePreDeployCopyAllFilesToOneFolder /p:_PackageTempDir="C:\local\Temp\8d6d315018f5ff9";AutoParameterizationWebConfigConnectionStrings=false;Configuration=Release;UseSharedCompilation=false /p:SolutionDir="C:\Users\User\Documents\GitHub\Project\.\\" -p:Configuration=Debug

请注意configuration=release和configuration=debug。编译错误如下 Invalid expression term 'string' 在以下代码行:

bool licenseOK = LicenseHelper.CheckLicenseLimitations(FeatureEnum.Ecommerce, out int skuCount, out int maxSKUCount);

在visualstudio的debug或release模式下,这一点都不会突出显示。我还能够在本地复制(如上面的路径所示),如果我将两个配置都更改为相同的(无论我选择debug还是release),它的编译就可以了。
我知道我可以做的是创建自己的自定义部署命令脚本文件作为解决方法,但我想我不明白为什么上面的msbuild命令一开始就不起作用。
关于为什么在这之前我的所有asp.net项目都可以这么做,你有什么想法吗?我知道的一件事是,kentico最近包含了roslyn编译器,不幸的是,我对它不太熟悉-这可能是问题的一部分吗?
更新#1:似乎所有编译错误都与仅在c#7.0中有效的代码有关。这可能是个线索。

qvtsj1bj

qvtsj1bj1#

这一切都归结为这样一个事实:kentico的较新版本的代码只在c#7中有效,并且需要msbuild15来编译。下面是我如何建立kudu的:
添加名为 .deployment 在我的回购的根,只包含以下内容。这告诉kudu使用自定义部署脚本。
通过ftp将deploy.cmd文件从我的azure应用程序服务下载到我的repo的根目录,并根据更新https://github.com/projectkudu/kudu/issues/2350#issuecomment-373817740使用msbuild 15路径。详情如下。
.部署文件内容

[config]
command = deploy.cmd

deploy.cmd更新
1-添加 -MSBuildPath "%MSBUILD_15_DIR%" 去接电话。例子:

nuget.exe restore "{your .sln file path}" -MSBuildPath "%MSBUILD_15_DIR%"

2-更换 %MSBUILD_PATH%%MSBUILD_15_DIR%\MSBuild.exe 在步骤下的两个示例中 2. Build to the temporary path 这是完成构建所需要的全部。

nqwrtyyt

nqwrtyyt2#

正如keith提到的,kentico12使用的是c#7.0的兼容性问题。所以这个线程提到需要为c#7.0代码运行msbuild版本15。我使用msbuild15为本地kentico12项目运行了一个类似的调试命令,结果成功了。

相关问题