我正在尝试配置Visual Studio Online以将我的ASPNET 5应用程序连续部署到Azure webapp,如本教程中所述,来自Team Foundation Build文档:https://msdn.microsoft.com/Library/vs/alm/Build/azure/deploy-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软件包的推荐方法是什么?
EDIT: 现在我有一个解决方法 . 我可以将 /p:RuntimeToolingDirectory="C:\Users\buildguest\.dnx\runtimes\dnx-coreclr-win-x64.1.0.0-beta6"
作为参数传递给msbuild . 这将覆盖GetRuntimeToolPath中的默认逻辑并强制它使用.Net Core . 这有效,但感觉就像一个黑客,所以我将问题留给更好的答案 .
4 回答
要发布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
从特定Web App的“仪表板”页面上的Web App部分中的旧Azure门户 . [深呼吸]
在右侧是“使用Visual Studio在线设置发布”的部分 . 单击该链接将指导您完成从visual studio在线存储库(基于git或tfs)设置持续部署的必要步骤
由于这是一个满口的,我提供了一个教程的链接,引导您完成整个过程:https://azure.microsoft.com/en-us/documentation/articles/cloud-services-continuous-delivery-use-vso/#step3
与.NET Core RC2-preview1工具有同样的问题 . 我的解决方案:使用正确的.NET Core安装路径将
SDKToolingDirectory
添加到我的.xproj:通过将以下参数传递到Visual Studio Online构建过程的Bundling步骤,我有一些运气:
这会导致我的发布在运行msbuild.exe时利用64位CoreCLR运行时 .
我通过挖掘Microsoft.DNX.Publishing.targets文件(在C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ Web中找到)并查找我可以传入的变量来解决这个问题 . 属性 . 关于运行时,这似乎是一个有趣的片段:
在将来证明您的构建例程与未来变量名称的更改方面,可能存在一点(?)风险 . 但是,你知道,测试版软件和所有:)
祝好运!