ShowProgramCode

2021年11月25日 星期四

改變.NET Framework版本

 如何不透過UI直接從檔案更改Framework版本?

原先我都是利用Visual Studio的介面更改Framework的版本,不過這次的專案不知為何改變版本後,Web Reference就發生錯誤,甚至無法編譯。

本來應該設法好好找出Web Reference就發生錯誤的原因,不過由於時程問題,我想到如果不透過介面直接從檔案更改Framework版本,是否可以避免因為重新讀取專案檔,系統檔改寫後編譯錯誤的問題。

終於,那麼更改Framework應該從哪個系統檔處理呢?

基本上就是.csproj檔案。

在這個檔案內容可以找到Framework目前的版本,直接修改版本號碼就可以改變Framework版本。

改變.sln專案檔版本

如何將.sln專案檔提升至2017版本

最近遇到客戶提出了這個要求,順便參考官方文件的說法,整理一下如何提升專案檔版本?

參考網站:https://docs.microsoft.com/zh-tw/visualstudio/extensibility/internals/solution-dot-sln-file?view=vs-2017


先不考慮專案內容是否會有衝突的問題,單純紀錄該如何修改.sln版本。

依照官網文件的說法,基本上相當簡單,只要修改檔案的表頭即可。

下列附上每個不同VS版本的.sln表頭。

  • VS2022

Microsoft Visual Studio Solution File, Format Version 12.00

# Visual Studio Version 16

VisualStudioVersion = 16.0.28701.123

MinimumVisualStudioVersion = 10.0.40219.1


  • VS2019

Microsoft Visual Studio Solution File, Format Version 12.00

# Visual Studio Version 16

VisualStudioVersion = 16.0.28701.123

MinimumVisualStudioVersion = 10.0.40219.1


  • VS2017

Microsoft Visual Studio Solution File, Format Version 12.00

# Visual Studio 15

VisualStudioVersion = 15.0.26730.15

MinimumVisualStudioVersion = 10.0.40219.1


  • VS2013

Microsoft Visual Studio Solution File, Format Version 12.00

# Visual Studio 2013

VisualStudioVersion = 12.0.40629.0

MinimumVisualStudioVersion = 10.0.40219.1

VS2022與VS2019的設定表頭設定基本是相同的,關於這個我暫時沒有找到更詳細的說法,因為我最近修改的版本為VS2013 => VS2017,經過修正之後,客戶那邊確認可以使用。

將官網針對表頭的說明複製上來,若有侵權疑慮請先告知,謝謝!


Microsoft Visual Studio Solution File, Format Version 12.00
定義檔案格式版本的標準標頭。

# Visual Studio 15
Visual Studio 的主要版本, (最近) 儲存此方案檔。 這項資訊會控制解決方案圖示中的版本號碼。

VisualStudioVersion = 15.0.26730.15
Visual Studio 的完整版本, (最近) 儲存的方案檔。 如果解決方案檔是由具有相同主要版本的較新版本 Visual Studio 所儲存,則不會更新此值,以便減少解決方案檔中的流失情形。

MinimumVisualStudioVersion = 10.0.40219.1
可以開啟此方案檔之 Visual Studio 的最小 () 版本。

也就是說,基本上只要置換中間兩行就能將.sln版本更換。

# Visual Studio 15

VisualStudioVersion = 15.0.26730.15

查詢此問題時,還有看到可以將專案拷貝各種不同版本的.sln檔案,方便使用不同的VS版本開啟的說法。

通常專案檔版本還是需要配合客戶需求,所以更改版本是有機會發生的問題,特別記錄下來。