VS2017で.NET Framework 4.0 web formのPJを4.6.1にアップグレードする
1、Website Property Pages
Project -> [Property Pages] -> [Website Property Pages] -> [Build]
Target Frameworkを「.NET Framework 4」から「.NET Framwork 4.6.1」に変更して保存。
再ビルドして他の影響がないことを確認する。
.NET Framework 4 ⇒ 4.6.1 に変更した後、異常にエラーが出まくる場合
一気にバージョンアップを行わないで、互換性が高いバージョンの間のバージョンアップを順番に試してみる。
- 4 -> 4.5
- 4.5 -> 4.6
- 4.6 -> 4.6.1
.NETバージョンアップ - マイクロソフト系技術情報 Wiki
2、以下のようにGlobalやApp_Codeに関するエラーが表示される場合の対策
error 1 - The type 'Global' is defined in an assembly that is not referenced. You must add a reference to assembly 'App_Code.****, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. error 2 - Cannot convert type 'System.Web.HttpApplication' to 'ASP.global_asax'
Global.asaxが存在する場合、以下のコードをGlobal.asaxに追記する
<script RunAt="server"> protected void Application_Start() { } protected void Application_Start(object sender, EventArgs e) { } protected void Application_OnStart() { } protected void Application_OnStart(object sender, EventArgs e) { } </script>
参考
Build errors only when sources open
The type 'Global' is defined in an assembly that is not referenced errors in VS2015-黑暗執行緒
3、バージョンアップに影響するNugetパッケージをreinstall
.NETバージョンアップをすることで影響が出るNugetパッケージの場合、packages.configに以下のように表示される。
packages.config (reinstall前)
<?xml version="1.0" encoding="utf-8"?> <packages> <package id="MySql.Data" version="6.9.8" targetFramework="net40" requireReinstallation="true" /> <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net40" requireReinstallation="true" /> </packages>
requireReinstallationが付いてるpackageは.NETバージョンアップに影響するパッケージだから再インストールしてくださいの意味なので、同じバージョンを新しくインストールし直す。
c# - Nuget: What is the purpose of requireReinstallation tag in packages.config - Stack Overflow
Reinstalling and Updating NuGet Packages | Microsoft Docs
Update-Packageコマンドを使ってNugetパッケージをreinstallする
[Tool] -> [Nuget Package Manager] -> [Package Manager Console]
Update-Package -Id MySql.Data –reinstall Update-Package -Id Newtonsoft.Json –reinstall
packages.config (reinstall後)
<?xml version="1.0" encoding="utf-8"?> <packages> <package id="MySql.Data" version="6.9.8" targetFramework="net461" /> <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net461" /> </packages>