日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

.NET Core多平台项目模板eShopOnContainers编译手记

發(fā)布時(shí)間:2023/12/4 asp.net 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Core多平台项目模板eShopOnContainers编译手记 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

之前寫(xiě)了一個(gè)功能性的文件上傳asp.net core的小程序,加上點(diǎn)七七八八的東西,勉強(qiáng)能夠應(yīng)付了,打算學(xué)習(xí)一下微軟的官方.NET CORE微服務(wù)示例https://github.com/dotnet-architecture/eShopOnContainers。這個(gè)例子很全面地展現(xiàn)了微服務(wù)、docker以及.net core的魅力。里面使用了很多知識(shí)點(diǎn),比如單點(diǎn)登錄、API資源授權(quán),權(quán)限控制,用戶管理等,可以作為一個(gè)應(yīng)用開(kāi)發(fā)的學(xué)習(xí)模板。

重要的事情強(qiáng)調(diào)三遍:多平臺(tái)!多平臺(tái)!多平臺(tái)!

一個(gè)項(xiàng)目包含了.NET Core在多個(gè)目標(biāo)平臺(tái)上的應(yīng)用,包括ASP.NET CORE上的WEB SPA(單頁(yè)應(yīng)用)、傳統(tǒng)網(wǎng)頁(yè)以及移動(dòng)APP(基于Xamarin,同時(shí)支持Android、iOS、windows phone)。可以獨(dú)立部署或者直接部署到Azure上,非常贊!


具體分析結(jié)構(gòu)的文章已經(jīng)有不少了,我重點(diǎn)說(shuō)下安裝和編譯的幾個(gè)小坑,以便大家能夠更快地開(kāi)始。主要的參考鏈接是https://github.com/dotnet-architecture/eShopOnContainers/wiki/02.-Setting-eShopOnContainers-in-a-Visual-Studio-2017-environment,在vs2017上搭建windows服務(wù),跑個(gè)WEBSPA程序。

1.工具要求

  • 源代碼

  • Windows 10 專業(yè)版以上(支持Hyper-V)

  • Docker for windows

  • Visual Studio 2017 15.3以上

  • npm(裝上NODE.JS)用于跑SPA程序

據(jù)說(shuō)VS2017 15.4版本在docker compose上有點(diǎn)問(wèn)題,但是我還是義無(wú)反顧的升級(jí)了,下文將講到這個(gè)坑。

1.下載代碼

git clone https://github.com/dotnet-architecture/eShopOnContainers.git

我用的是dev分支,默認(rèn)就是。

2.配置Docker

在上面那個(gè)docker鏈接里面安裝docker for windows,選什么版本都沒(méi)關(guān)系,我選的穩(wěn)定版。直接一路next,如果之前沒(méi)啟用hyper-v,會(huì)提示重啟,照做就好。

然后是在Docker的設(shè)置->advanced里面,配置利用CPU核心數(shù)量和內(nèi)存大小,按照官方說(shuō)法,CPU分配3核心,內(nèi)存分配4G。由于我使用vs2017直接compose docker,所以,下一步就是共享磁盤(pán),在Shared drives里面配置共享的磁盤(pán),共享源文件所在的磁盤(pán)即可。

共享磁盤(pán)的時(shí)候,會(huì)提示輸入windows賬戶用戶名和密碼,如果windows賬戶沒(méi)有密碼的話,這步就點(diǎn)不過(guò)去了。

對(duì)本地開(kāi)發(fā)來(lái)說(shuō),不需要其他操作了,如果需要通過(guò)外部連接服務(wù)的話,那么還需要配置防火墻,打開(kāi)5100-5110這一段的端口。

3.Visual Studio 2017配置

如果全新安裝vs2017,需要以下幾個(gè)workloads:

  • ASP.NET和web開(kāi)發(fā)

  • .Net Core跨平臺(tái)開(kāi)發(fā)支持

不部署到Azure上,就不需要Azure開(kāi)發(fā)這個(gè)選項(xiàng)了。當(dāng)然,如果你需要開(kāi)發(fā)移動(dòng)端,或者桌面端的,甚至是UWP,那么對(duì)應(yīng)的勾上就行了。

有一個(gè)關(guān)鍵點(diǎn),如果勾上了移動(dòng)開(kāi)發(fā)的話,需要取消Google Android Emulator和Intel Hardware Accelerated Execution Manager,因?yàn)樗麄兒虷yper-V不兼容。

4.編譯SPA程序

下載的代碼有很多sln文件,我們測(cè)試WEBSPA,關(guān)注一個(gè)eShopOnContainers-ServicesAndWebApps.sln就可以了。我們找到eShopOnContainers\src\Web\WebSPA這個(gè)文件夾,先編譯SPA程序。

a.安裝npm

直接從https://nodejs.org/en/下載最新穩(wěn)定版node.js,一路next安裝,我安裝的是8.9.1LTS,記得勾上ADD TO PATH選項(xiàng)。

b.配置vs2017 npm路徑

在工具->選項(xiàng)->項(xiàng)目與解決方案->Web package management->外部web工具里面,加一行你剛剛安裝的node的路徑(如果是一路next的話,那么就是C:\Program Files\nodejs)。然后調(diào)整順序,注意新增加的要在第二行,要在WEB\External的上面。

c.編譯SPA程序

運(yùn)行powerhsell,定位到eShopOnContainers\src\Web\WebSPA這個(gè)文件夾。
輸入npm install回車,等一會(huì)兒就好了。然后按照教程,輸入回車。

錯(cuò)誤,提示找不到node-sass,還好文檔里面有,如果不行了,輸入npm rebuild node-sass回車

沒(méi)有提示直接結(jié)束了,那么繼續(xù)npm run build:prod

額。。。和說(shuō)好的劇本不一樣啊。是不是node-sass有點(diǎn)問(wèn)題了,那我安裝一下總行了吧。

還是不行,npm,你怕嗎?

搜索了一下這個(gè)錯(cuò)誤Cannot read property '0' of undefined,找到了一個(gè)https://github.com/npm/npm/issues/17858,提示應(yīng)該是npm版本有bug的問(wèn)題,我運(yùn)行的的npm版本是5.5.1的(運(yùn)行npm -v可以查看),在bug沒(méi)修復(fù)前,臨時(shí)解決方案:

npm install -g npm@5.2.0

還是不行。應(yīng)該是剛剛版本install之后不兼容造成了,從npm install開(kāi)始從頭來(lái)一遍就好了。如果npm run build:prod正常結(jié)束了,就說(shuō)明OK了。

5. debug docker

上面工作做完了,用vs2017打開(kāi)eShopOnContainers-ServicesAndWebApps.sln文件,右鍵解決方案管理器里面的docker-compose,點(diǎn)設(shè)為啟動(dòng)項(xiàng)目。

F5,開(kāi)始編譯。然后等了一會(huì)兒。

提示很多錯(cuò)誤,有配置沒(méi)有值?啥,還要配置!

定位源文件夾根目錄下的.env文件。里面有很多配置項(xiàng),如果不用azure的話,保持默認(rèn)就可以了,但是最后的這個(gè)一定要設(shè)置true或者false。

重來(lái),發(fā)現(xiàn)還是不行。最后一個(gè)error:invalid reference format還是存在。這就是vs2017 15.4的坑了。
參考http://www.cnblogs.com/dadream/p/7800104.html,定位源文件夾,刪除docker-compose.yml中所有鏡像的?':${TAG:-latest}'?后綴。

重新F5,編譯通過(guò)了,但是docker要下載各種鏡像,是更漫長(zhǎng)的等待。

最后出現(xiàn)這個(gè)東西,說(shuō)明成功了。再仔細(xì)研究吧~HAVE FUN!

原文地址:http://www.cnblogs.com/podolski/p/7819615.html


.NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總 http://www.csharpkit.com

總結(jié)

以上是生活随笔為你收集整理的.NET Core多平台项目模板eShopOnContainers编译手记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。