寫了那么多年.Net,估計是寫習慣了,沒注意,所以最近遇到了一個比較麻煩的事情,說起來比較慚愧!公司的其他.Net程序員可能要因此將VisualStudio全部升級成VisualStudio2022,不然可能他們會無法編譯我寫的項目,而通過這件事情,也讓我明白了,為什么很多.Net程序員都說.Net升級不向下兼容這個事情了!
事情的起因是之前公司要我做一個WebApi,因為公司都是一幫大齡程序員,因此,之前做的WebApi都是使用.NetFramework下的MVC寫的,我覺得這有點過時了,因為現在大多數使用.Net技術棧的公司寫WebApi都是使用.Net Core了!
可能有點炫技心理吧,于是接到公司這個任務以后,我使用的是.Net8作為技術框架,完成了公司交代的任務。
其實,這個事情也過去很久了,我寫的WebApi也沒出現過什么大問題,只不過,后來發生的一件事情,讓我非常頭疼!
突然有一天,我們公司另外一個程序員寫的一個功能需要引用一個第三方庫(下簡稱dll),這個第三方庫只支持32位程序引用,也就是這個dll導致了一系列問題!
我電腦安裝的VisualStudio的版本是2022,而引用了這個32位dll的項目是一個桌面軟件項目,框架是WinForm,于是問題就出現了!
如果引用了這個32位dll的程序文件非界面文件,那么就沒事,但是,如果在某個界面的代碼里面引用了這個32位的dll,那么界面就打不開,VisualStudio就會報找不到這個32位dll文件的錯誤!
雖然報了這個錯,但不妨礙編譯,只是編寫的軟件界面打不開,無法預覽和修改界面。
后來一查才知道,原來從VisualStudio2022開始,就不支持32位的程序了。
可是,我電腦的硬盤已經不夠了,無奈之下,我就把VisualStudio2022給卸載了,下了一個VisualStudio2019,問題成功解決,再也不報32位dll引用不到的問題了!編寫的軟件界面也能夠正常預覽和修改了!
我開始想,2019就2019吧,反正其他同事用的都是2019,所以他們沒遇到這個問題,就我遇到了!
但是,當我試圖打開我之前寫的WebApi的時候,代碼框架竟然報錯,說找不到.Net8!
開始我不以為然,想著可能是我卸載了VisualStudio2022,連帶著把.Net8環境也卸載了,于是我就打開VisualStudio2019,試圖重新安裝.Net8環境。
結果,我發現VisualStudio2019的.Net環境最高只支持到了.Net5,沒有.Net8環境!甚至連.Net6的環境都不支持!開始我以為.Net8環境沒被我卸載掉,所以不顯示,所以我又通過官網手動下載了.Net8的RunTime和SDK,重新安裝了一遍,結果發現代碼還是報錯找不到.Net8環境!
搞了好久,我突然在官網的.Net8下載頁看到了這么一段說,IDE支持只有VisualStudio2022!也就是說,只有VisualStudio2022才能寫.Net8項目!
這不是扯淡嘛!
但是,現實就是這樣,于是,我總結了下:
VisualStudio2022不支持32位的應用程序,雖然報錯不影響編譯!
.Net6以上的版本只能在VisualStudio2022這個IDE上編譯,在低版本的IDE上不支持!
我記得我第一次寫.NetCore代碼的時候,VisualStudio版本應該是2017,.NetCore版本用的還是.Net Standard3.1,后來又經歷了.Net5,一直到.Net8,一直也沒出現過任何問題。
現在想想,只要VisualStudio出新版本我總會更新,所以才會忽略VisualStudio對于不同版本的.Net的支持是不同的,僅僅是通過官方推送的更新是無法支持到更高的.Net版本的!
結語
事已至此,問題擺在了那里,我們公司很多程序員電腦里的VisualStudio的版本都是2019版本,如果日后想要修改我的代碼,就必須把VisualStudio升級到2022版本!
所以,為了不讓這個問題讓大家措手不及,我只能要求大家在電腦上同時安裝VisualStudio2019和VisualStudio2022!
對了,這里面還有一個插曲,我在用VisualStudio2022時順便購買了一個Copilot,結果發現安裝了VisualStudio2019以后也不能用了!所以,大家要千萬注意哦!
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.