我正尝试使用Visual Studio 2015中的Web deploy([右键单击]->publish)将基于ASP.NET 5 ES2016导航框架的Aurelia应用程序部署到Microsoft Azure。
但我无法让宣誓书生效。
我已将project.json
文件中的prepublish
设置更改为:
"prepublish": [ "npm install", "gulp bundle" ]
但这只会使发布过程在Visual Studio中失败。从控制台运行gulp bundle
工作正常。
因此,我的下一次尝试是删除所有prepublish
任务,手动运行gulp bundle
,然后发布。这允许发布过程完成,但azure上的web应用程序永远不会加载,最终会让我超时。
考虑到这可能与jspm_packages
文件夹有关,我尝试将这些文件夹包含在基于该github线程的Web.xproj
文件中,但这导致了以下错误:
502 - Web server received an invalid response while acting as a gateway or proxy server.
更新
我已经尝试过重新设置prepublish
脚本并从控制台运行dnu publish
。它运行起来没有问题,并且在binoutputwwwroot
文件夹中生成了所有必要的输出。但是,当从Visual Studio中的"发布"连续菜单操作运行时,同样的过程会失败;则不产生输出。
只是在这里添加它,以防它能为这个问题提供一些线索。
更新2
好的,我注意到dnu publish
命令的关闭消息是
Using command 'web' as entry point for web.config
然后一分钱掉了下来。Aurelia Skeleton Navigation解决方案在`project.json:中定义了以下命令
"web": "Microsoft.AspNet.Server.Kestrel --server.urls=http://*:9000/",
这当然在Azure中不起作用。因此,我删除了--server.urls
选项,再次从project.json
中删除了prepublish
脚本,瞧,应用程序运行。。。
。。。未捆绑
无论如何,自从开始输入这个问题以来,已经发生了很多变化,但我仍然想知道:
当我定义了
prepublish
任务时,为什么Visual Studio的发布会失败?最重要的是,我如何将捆绑的Aurelia应用程序发布到azure
更新3
当从控制台运行时,绑定显然有效。我想在从project.json
中删除--server.urls
设置后,我从未尝试过发布捆绑应用程序。
那么我们现在在哪里呢
使用"prepublish": [ "gulp bundle" ]
发布到Azure仍然失败。这是Aurelia导航骨架附带的gulpfile.js
:
require('require-dir')('build/tasks');
Visual Studio在运行prepublish
任务时在watch.js
的以下行中抛出错误:
console.log(`File ${event.path} was ${event.type}, running tasks...`);
这是非常不可理解的,因为bundle
任务不调用watch
。曾经并且从控制台运行gulp bundle
可以按预期工作。
因此,看起来VS2015正在从build/tasks
文件夹加载每个任务。我已经尝试过完全注释掉watch.js
文件,但后来只出现了以下错误:prepublish failed with code 1
。
如果有任何关于为什么我不能用prepublish
任务发布的帮助或想法,我们将不胜感激。
要使用Web Deploy将Aurelia ASP.NET 5 ES2016导航骨架发布到Azure(右键单击>发布),我们必须对project.json进行两次更改。
添加一个预发布条目,该条目将安装NPM依赖项(否则为失败的gump),安装JSPM包,并与gump绑定。
"prepublish": [ "npm install", "jspm install -y", "gulp bundle" ]
从web命令中删除--server.urls=http://*:9000/
,因为Azure不支持该地址。这是正确的条目:
"web": "Microsoft.AspNet.Server.Kestrel"
通过这两项更改,Web Deploy正在使用Visual Studio Community 2015 Update 2对本地IIS和Azure Web应用程序进行工作。