Joh*_*ohn 14 msbuild packaging msdeploy azure-devops asp.net-core
我正在尝试配置Visual Studio Online以将我的ASPNET 5应用程序连续部署到Azure webapp,如本教程中所述,来自Team Foundation Build文档:https://msdn.microsoft.com/Library/vs/alm/Build/天蓝色/部署,aspnet5
我已经完成了所有步骤,一切都很顺利.默认情况下,此脚本部署我的应用程序版本,该应用程序以完整的.Net 4.5.1 DNX为目标,因此我决定尝试修改它以部署.Net Core.
构建脚本通过调用以下方式创建其部署包:msbuild.exe /t:Build,FileSystemPublish
在调高日志详细程度并阅读相关的msbuild文件后,我学到了以下内容:
"Build"目标最终使用dnx.exe来编译项目.因为project.json文件包含dnx451和coreclr TFM,所以这一步为两个框架产生了构建输出 - 到目前为止一直很好.
但是,FileSystemPublish目标似乎只输出一个针对.Net 4.5.1运行时的msdeploy包.从日志中我可以看到执行FileSystemPublish目标最终会发出"dnu publish"命令,在我的情况下,将"dnx-clr-win-x86.1.0.0-beta6"作为-runtime参数传递.当我按照面包屑找出它的位置时,我的值"dnx-clr-win-x86.1.0.0-beta6"最终出现在Microsoft.DNX.Tasks.dll中的"GetRuntimeToolingPath"任务中.此任务似乎在global.json中查找以确定要使用的正确运行时,但奇怪的是在创建返回字符串之前,在内部用"x86"和"clr"覆盖此值.
如果我正确地解释了事情,似乎FileSystemPublish目标(在Microsoft.DNX.Publishing.targets中)基本上(间接)硬连线,以便在生成其包输出时使用x86,完整的.Net框架DNX.在这一点上,我不知道如何让这个构建过程生成.Net Core包.
我的问题是为什么FileSystemPublish会与x86完整的.Net DNX耦合,并且考虑到这种情况(除非我弄错了)为ASPNet 5应用程序生成一个针对.Net核心的msdeploy包的推荐方法是什么?
编辑:
目前我有一个解决方法.我可以/p:RuntimeToolingDirectory="C:\Users\buildguest\.dnx\runtimes\dnx-coreclr-win-x64.1.0.0-beta6"作为参数传递给msbuild.这将覆盖GetRuntimeToolPath中的默认逻辑并强制它使用.Net Core.这有效,但感觉就像一个黑客,所以我将问题留给更好的答案.
小智 8
要发布Core CLR,您可以将msbuild参数"PublishDNXVersion"作为dnx-coreclr-win-x64.1.0.0-beta6传递.
msbuild <project>.xproj /p:deployOnBuild=true;PublishDNXVersion=dnx-coreclr-win-x64.1.0.0-beta6
从旧 Azure 门户中特定 Web 应用程序仪表板页面上的 Web 应用程序部分。[深呼吸]
右侧是“使用 Visual Studio Online 设置发布”部分。单击该链接将引导您完成从 Visual Studio 在线存储库(基于 git 或 tfs)设置持续部署的必要步骤
由于这很拗口,我提供了一个教程的链接,引导您完成整个过程:https ://azure.microsoft.com/en-us/documentation/articles/cloud-services-continuous-delivery-use- vso/#step3
| 归档时间: |
|
| 查看次数: |
3495 次 |
| 最近记录: |