IT業界のすみっこ暮らし

ふと気がついたときの記録

VS2017で.NET Framework 4.0 web formのPJを4.6.1にアップグレードする


1、Website Property Pages

Project -> [Property Pages] -> [Website Property Pages] -> [Build] f:id:papamau:20180828182934p:plain

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>


プライバシーポリシー