番外 ~.NET Framework 4.8 と .NET5 を意識した記述~

概要

2020年11月に、.NET5がマイクロソフトからリリースされました。
.NET5 は .NET Framework 4.8と .NET Core 3.1 を 統合する新バージョンです。

秀丸エディタはあくまでもWindowsのみで動作するエディタですから、
秀丸の拡張機能を作るという点に絞れば、
Windows/Linux/MasOSとOSを跨いでバイナリが動作することをメリットとする「.NET5」を利用しても、
その恩恵を受けられない
といえます。

また、hm.NET も動作するのはあくまでも.NET Framework4系のアセンブリファイルのみです。

しかしながら、今後世に出てくるライブラリは「.NET5」「.NET6」を動作対象とするものへと徐々に移行していくことは確実です。
事実1つ前の.NET3.5で利用できるライブラリは非常に少なくなりました。

このため、今後は、.NET Framework4.8を動作対象としつつも、.NET5と同じ記述の範囲で制作しておくことは
長い目で息の長いソースとなることが期待できるでしょう。

ここでは、Visual Studio 2019以降において、.NET Framework4.8 と .NET5 の両方で統一したソースとなるプロジェクトを作る方法を示します。

.NET Framework4.8と.NET5のマルチターゲットにするプロジェクト

  • クラスライブラリ .NET Coreで作成

    まずは、.NET Coreのライブラリ でプロジェクトを作ります。

    PICTURE

  • .NET 5.0に設定変更

    .NET Core 3.1がターゲットとなっているのであれば、.NET 5.0に設定を変更しておきましょう。

    PICTURE

  • プロジェクトファイル「***.cproj」をテキストエディタで開く

    PICTURE

  • プロジェクトファイル「***.cproj」を編集

    以下のように編集することで、.NET Framework 4.8と.NET5-Windows の両方を
    ターゲットとする準備ができました。

    sample.csproj
    <Project Sdk="Microsoft.NET.Sdk">
    
        <PropertyGroup>
            <OutputType>Library</OutputType>
            <LangVersion>latestMajor</LangVersion>
            <TargetFrameworks>net5.0-windows;net48</TargetFrameworks>
            <UseWindowsForms>true</UseWindowsForms>
    
        </PropertyGroup>
    
        <ItemGroup Condition=" '$(TargetFramework)' == 'net48' ">
            <Reference Include="System.Windows.Forms">
            <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.Windows.Forms.dll</HintPath>
            </Reference>
        </ItemGroup>
    
    </Project>
                        
  • ソリューションを一度閉じて、再び読み込む

    プロジェクトファイルを書き換えたため、一度ソリューションを閉じて再度Visual Studio で開きます。

    PICTURE

  • 以降ソースを編集

    以降はソースをビルドする度に .NET Framework 4.8 と .NET5 の両方の視点からソースがチェック、ビルドされることなります。
    このようにして、(OS間というよりも将来の.NETに対して)互換性の高いソースを構築することが出来ます。

  • ソースの場所

    Githubにソースがあります。