.NET Core多平台项目模板eShopOnContainers编译手记
之前写了一个功能性的文件上传asp.net core的小程序,加上点七七八八的东西,勉强能够应付了,打算学习一下微软的官方.NET CORE微服务示例https://github.com/dotnet-architecture/eShopOnContainers。这个例子很全面地展现了微服务、docker以及.net core的魅力。里面使用了很多知识点,比如单点登录、API资源授权,权限控制,用户管理等,可以作为一个应用开发的学习模板。 重要的事情强调三遍:多平台!多平台!多平台!一个项目包含了.NET Core在多个目标平台上的应用,包括ASP.NET CORE上的WEB SPA(单页应用)、传统网页以及移动APP(基于Xamarin,同时支持Android、iOS、windows phone)。可以独立部署或者直接部署到Azure上,非常赞! 具体分析结构的文章已经有不少了,我重点说下安装和编译的几个小坑,以便大家能够更快地开始。主要的参考链接是https://github.com/dotnet-architecture/eShopOnContainers/wiki/02.-Setting-eShopOnContainers-in-a-Visual-Studio-2017-environment,在vs2017上搭建windows服务,跑个WEBSPA程序。 1.工具要求
1.下载代码
我用的是dev分支,默认就是。 2.配置Docker在上面那个docker链接里面安装 然后是在Docker的设置->advanced里面,配置利用CPU核心数量和内存大小,按照官方说法,CPU分配3核心,内存分配4G。由于我使用vs2017直接compose docker,所以,下一步就是共享磁盘,在Shared drives里面配置共享的磁盘,共享源文件所在的磁盘即可。
对本地开发来说,不需要其他操作了,如果需要通过外部连接服务的话,那么还需要配置防火墙,打开5100-5110这一段的端口。 3.Visual Studio 2017配置如果全新安装vs2017,需要以下几个workloads:
不部署到Azure上,就不需要Azure开发这个选项了。当然,如果你需要开发移动端,或者桌面端的,甚至是UWP,那么对应的勾上就行了。 有一个关键点,如果勾上了移动开发的话,需要取消 4.编译SPA程序下载的代码有很多sln文件,我们测试WEBSPA,关注一个eShopOnContainers-ServicesAndWebApps.sln就可以了。我们找到eShopOnContainerssrcWebWebSPA这个文件夹,先编译SPA程序。 a.安装npm直接从https://nodejs.org/en/下载最新稳定版node.js,一路next安装,我安装的是8.9.1LTS,记得勾上ADD TO PATH选项。 b.配置vs2017 npm路径在工具->选项->项目与解决方案->Web package management->外部web工具里面,加一行你刚刚安装的node的路径(如果是一路next的话,那么就是C:Program Filesnodejs)。然后调整顺序,注意新增加的要在第二行,要在WEBExternal的上面。 c.编译SPA程序运行 错误,提示找不到node-sass,还好文档里面有,如果不行了,输入 没有提示直接结束了,那么继续 额。。。和说好的剧本不一样啊。是不是node-sass有点问题了,那我安装一下总行了吧。 还是不行,npm,你怕吗? 搜索了一下这个错误Cannot read property '0' of undefined,找到了一个https://github.com/npm/npm/issues/17858,提示应该是npm版本有bug的问题,我运行的的npm版本是5.5.1的(运行
还是不行。应该是刚刚版本install之后不兼容造成了,从npm install开始从头来一遍就好了。如果npm run build:prod正常结束了,就说明OK了。 5. debug docker上面工作做完了,用vs2017打开eShopOnContainers-ServicesAndWebApps.sln文件,右键解决方案管理器里面的docker-compose,点设为启动项目。 F5,开始编译。然后等了一会儿。 提示很多错误,有配置没有值?啥,还要配置! 定位源文件夹根目录下的.env文件。里面有很多配置项,如果不用azure的话,保持默认就可以了,但是最后的这个一定要设置true或者false。 重来,发现还是不行。最后一个error:invalid reference format还是存在。这就是vs2017 15.4的坑了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET Core Web API从静态类登录
- asp.net – 角色提供程序是否按请求缓存?
- Codebehind中的ASP.NET下拉列表与ASPX页面中的相关联
- asp.net-mvc – Elmah.MVC在IIS Express下工作但不是IIS 7.
- asp.net – 使用数据库的整数数据域绑定gridview的复选框
- ASP.NET MVC正则表达式路由约束
- 在ASP.NET中,如何让浏览器将字符串内容下载到文件中? (C#)
- asp.net – 如果Ninject尚未绑定,如何在Ninject中绑定?
- 探索ASP.NET Identity 身份验证和基于角色的授权,中级篇
- 在ASP.NET上构建维基百科(学习练习).如何清理不受信任的数据
- asp.net – executionTimeout和Server.ScriptTim
- asp.net – 关于的页面:空白显示不安全的内容
- asp.net-mvc – 使用用户标识从移动客户端访问WC
- asp.net – 使用AJAX进行WCF调用
- 在IIS Express中无法启动asp.net核心Web应用程序
- asp.net-web-api – 在Web Api / Owin架构中,处理
- asp.net-mvc – ASP.NET MVC中的动态范围验证2
- asp.net-mvc – 带负载均衡器的SignalR v2
- asp.net – Silverlight初始化错误2110 Internet
- Asp.Net MVC缺少样式并默认为登录页面