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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

1.NET 4.6.1向.NET core 2.0项目迁移(HelloWorld篇)

發(fā)布時間:2025/4/16 asp.net 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1.NET 4.6.1向.NET core 2.0项目迁移(HelloWorld篇) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

今天早上看到新聞,Microsoft都快要推出.NET5了,.NET core也3.0了,而我一直以來的項目都是.net 4.5+,包括WWF,WCF等技術(shù)框架,目前主流的基礎(chǔ)框架都基本要求支持跨平臺,容器化,所以.NET Core將是趨勢,網(wǎng)上簡單的查了下相關(guān)資料,.net core明確不支持wwf,wcf,因此遷移道路注定充滿各種坑,接下來一一記錄,以備翻查。

1.開發(fā)環(huán)境的選擇

Visual Studio2017雖然功能強大,IDE各種圖形化編輯,傻瓜式一鍵生成,但非常重,幾個G,下裝安裝兩小時以上。為了命令行運指如飛(裝逼)的需要,選擇一個輕量級的IDE是首要工作,同樣作為微軟出品,必屬精品(作為一個微軟系技術(shù)跟隨者,此處拍下馬屁)的Visual Studio Code,口碑爆棚,由Eric Gamma領(lǐng)導(dǎo)開發(fā),說起這個大神,如果你不知道他的名字,那你絕對IT還沒入門,作為GoF(Gang of Four四人幫)合著的設(shè)計模式是每個資深I(lǐng)T人必看的書籍(PS,其它大神如Anders hejlsberg/JeffreyRichter/Matin Fowler,如果你沒看過他們的書,那都不好意思說混IT的,為大神打call)。不論是開發(fā)NODE.JS、前端Web、.NET Core,VS Code都能輕松搞定。

下載安裝后:

和VS2017的差異如紅色標注:

最上面紅色框是打開項目,不再是打開.csproj或.sln,而是直接打開文件夾,第二個標注的蟲子圖標是調(diào)試設(shè)置,后面再詳細說說怎么用,第三個紅色標注是插件安裝(這也是VSCODE強大之處)。

2.安裝.NET Core SDK

VS Code->Terminal->new Terminal(打開一個新的終端,相當(dāng)于命令行窗口),

輸入dotnet -version,(默認輸出是沒有顯示紅色標識文字的,我本機已經(jīng)裝了2.2.105版本的sdk)

因為沒有安裝sdk,所以不能執(zhí)行創(chuàng)建MVC項目的命令,接下來去官網(wǎng)下載.net core sdk,

https://dotnet.microsoft.com/download/dotnet-core(目前最新版3.0)注意要下載sdk,而不是runtime的,runtime顧名思義是用于運行時支持。我的電腦是windows 64位的,所以我選擇紅色標識的,你可以根據(jù)電腦操作系統(tǒng)選擇對應(yīng)版本安裝下載(MAC OS上也支持得很好哦,其實我更喜歡在蘋果電腦上開發(fā),速度快,linux命令行天然支持,而且后面Docker of Mac也很容易跑起來)。

?

3.創(chuàng)建ASP.net core MVC 項目

?一直以來,java、php、.net各自陣容開發(fā)人員互懟,其中.net最被人詬病的就是命令行支持,但其實一直以來我們是在IDE的便利下,系統(tǒng)幫我們做了大部份的命令行工作。幸運的是,是重拾命令行(開啟裝逼)模式的時候了:

vs code終端下鍵入:dotnet new mvc -n HelloWorld

File->Open Folder,打開創(chuàng)建的目錄,我是在d:\下執(zhí)行的創(chuàng)建項目命令,所以打開d:\HelloWorld目錄:

可以看到自動為我們創(chuàng)建了對應(yīng)的目錄和文件,相比.net 4.6項目結(jié)構(gòu),有較大差別,我們先從表面上看,有以下變化:

  • Program.cs,這是console或windows form程序入口呀,怎么Web網(wǎng)站也有這個文件了呢,其實看代碼就明白了,是在入口處創(chuàng)建了web服務(wù)并開啟監(jiān)聽http請求。

?

public static void Main(string[] args){CreateWebHostBuilder(args).Build().Run();}public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>WebHost.CreateDefaultBuilder(args).UseStartup<Startup>();}
  •  appsettings.json,傳統(tǒng)的web.config變成了這個,讀取方式也變了,原來System.Configuration變成了Microsoft.Extensions.Configuration
  • ? ?Content目錄和Scripts目錄變成了wwwroot,靜態(tài)資源全放到這個里面了。
  • ? ?代碼大量用了DI的技術(shù),這也不是啥新概念,老鳥一般都知道。

4.增加控制器和視圖

用VS2017增加控制器和視圖是非常簡單的,直接項目上右鍵彈出菜單就可以增加,但vs code里必須命令行增加:

dotnet aspnet-codegenerator controller -name MyController -actions -outDir Controllers

百度一下,是要增加一個引用,直接選擇Helloworld.csproj(項目文件在vs code里作為一個文件編輯),?在項目文件csproj中添加“?<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />”引用,保存后再在終端里運行dotnet restore命令:

可以看到自動為項目增加了幾個關(guān)聯(lián)的庫。dotnet restore這個命令比較重要,它的作用就是將項目中引用的庫自動從nuget中下載(補充一點:在用vs2017打開項目時,會自動執(zhí)行這個動作,并將下載的組件下載到packages目錄下,在使用svn或其它源碼管理工具時,這個目錄和bin、obj目錄一樣,是不需加入到源碼控制的,不然因為只讀鎖定會在加入nuget 包時出現(xiàn)訪問拒絕,許多新人不了解這個原理)

錯誤說得很清楚了,csproj里要再加上一個包引用:

<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" /> 再次執(zhí)行增加控制器的命令行,又出現(xiàn)新的錯誤了。 D:\HelloWorld\HelloWorld.csproj : warning NU1604: 項目依賴項 Microsoft.VisualStudio.Web.CodeGeneration.Design 不具有包含下限。在依賴項版本 中包含下限可確保一致的還原結(jié)果。 D:\HelloWorld\HelloWorld.csproj : warning NU1701: 已使用“.NETFramework,Version=v4.6.1”而不是項目目標框架“.NETCoreApp,Version=v2.2”還原包“Microsoft.Composition 1.0.27”。此包可能與項目不完全兼容。 D:\HelloWorld\HelloWorld.csproj : error NU1107: Microsoft.CodeAnalysis.CSharp 中檢測到版本沖突。直接安裝/引用 Microsoft.CodeAnalysis.CSharp 2.8.0 到項目 HelloWorld 可解決此問題。 D:\HelloWorld\HelloWorld.csproj : error NU1107: HelloWorld -> Microsoft.AspNetCore.App 2.2.0 -> Microsoft.CodeAnalysis.Razor 2.2.0 -> Microsoft.CodeAnalysis.CSharp (>= 2.8.0) D:\HelloWorld\HelloWorld.csproj : error NU1107: HelloWorld -> Microsoft.VisualStudio.Web.CodeGeneration.Design 1.0.0 -> Microsoft.VisualStudio.Web.CodeGeneration.Utils 1.0.0 -> Microsoft.CodeAnalysis.CSharp.Workspaces 1.3.0 -> Microsoft.CodeAnalysis.CSharp (= 1.3.0).正在生成 MSBuild 文件 D:\HelloWorld\obj\HelloWorld.csproj.nuget.g.props。D:\HelloWorld\HelloWorld.csproj 的還原在 18.14 sec 內(nèi)失敗。  想了想可能是版本不對,那剛加的這個包引用用啥呢,看提示上Microsoft.VisualStudio.Web.CodeGeneration.Design 1.0.0 是因為沒有指定版本而默認用了1.0.0的版本,改成2.0.4版本(和codeGenerator.tools一致)試試, <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.4" /> 錯誤 依舊,依據(jù)提示是版本不對,改成和.AspNetCore.App的一致版本2.2.0之后,再dotnet restore,系統(tǒng)提示還原成功。 再次執(zhí)行增加控制器的命令:dotnet aspnet-codegenerator controller -name MyController -actions -outDir Controllers

增加視圖:dotnet aspnet-codegenerator view Create Create -m ErrorViewModel? -outDir views/My

創(chuàng)建視圖時,必須選擇一個模型,這里我使用默認框架里的ErrorViewModel,另外上面命令行中有兩個Create,第一個是視圖名稱,可以自已命名其它name,第二個為視圖模板類型,可以為Empty/Create/Edit/Delete/Details/List六種類型之一。

接下來,我們運行程序,也是命令行dotnet run,編繹器自動找到.csproj項目編繹運行,也可手動指定項目或解決方案。

瀏覽器地址欄輸入localhost:5000/my/create,剛加入的模板頁面如下:

至此,第一個aspnet.core網(wǎng)站成功啟動,曲折的邁出了第一步。前路更精彩!

轉(zhuǎn)載于:https://www.cnblogs.com/coolalam/p/10824557.html

總結(jié)

以上是生活随笔為你收集整理的1.NET 4.6.1向.NET core 2.0项目迁移(HelloWorld篇)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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