0 支持
(140 ポイント)

MUN サーバのビルド・実行・停止の通りにオンプレミスサーバーの構築を試していたところ

 warning NETSDK1138: ターゲット フレームワーク 'netcoreapp2.1' はサポートされていません。今後、セキュリティ更新プログラムを受け取ることはありません 。サポートポリシーの詳細については、https://aka.ms/dotnet-core-supportをご覧ください
という警告文が連続して出てきました。
.dotnetの指定バージョンがかなり古そうなのですが何か解決法はありますでしょうか。

 

回答 1

0 支持
(3.9k ポイント)

ご指摘の通り、プロジェクトファイル内のターゲットフレームワーク情報を現行サポートのものに書き換える必要があるので、多少面倒ですがビルドスクリプトについて以下のように変更を加えれば対応可能かと思います。

※ 以下 .NETCore3.1 に置き換える例として示します。

1. サーバパッケージ内の csharp/appsettings.jsonを開き、NETCOREAPP.VERSION の値を2.1から3.1に書き換える

  "NETCOREAPP": {
    "VERSION": "3.1"
  },

2. Windows プラットフォームでビルドする場合、サーバパッケージ内の
 csharp/mun_master/mun_master.bat
 csharp/mun_resolver/mun_resolver.bat
 csharp/mun_proxy/mun_proxy.bat
 csharp/mun_room/mun_room.bat
をそれぞれ開き、60行目付近にあるupdate_csprojラベル(プロジェクトファイルの更新)処理について以下のように書き換える

REM ==============================================
REM プロジェクトファイルの更新
REM ==============================================
:update_csproj
set SCRIPT_GET_VER="..\\scripts\\GetNetCoreVerInCsproj.ps1"
set SCRIPT_UPDATE_VER="..\\scripts\\UpdateNetCoreVerInCsproj.ps1"
set PROJ_FNAME="%PROJ_NAME%.csproj"

for /F "usebackq" %%i in (`powershell -NoProfile -ExecutionPolicy Unrestricted -File %SCRIPT_GET_VER% %PROJ_FNAME%`) do (
    set NETCOREAPP_VERSION=%%i
)

if %VERSION_STRING% == 3.1 (
    if not %NETCOREAPP_VERSION% == netcoreapp3.1 (
        REM 2.x => 3.1に書き換え
        for /F "usebackq" %%i in (`powershell -NoProfile -ExecutionPolicy Unrestricted -File %SCRIPT_UPDATE_VER% %PROJ_FNAME% netcoreapp3.1 netcoreapp2.0`) do (
            set NETCOREAPP_VERSION=%%i
        )
        for /F "usebackq" %%i in (`powershell -NoProfile -ExecutionPolicy Unrestricted -File %SCRIPT_UPDATE_VER% %PROJ_FNAME% netcoreapp3.1 netcoreapp2.1`) do (
            set NETCOREAPP_VERSION=%%i
        )
    )
)
exit /b

3. Mac/Linux プラットフォームでビルドする場合、サーバパッケージ内の
 csharp/mun_master/mun_master.sh
 csharp/mun_resolver/mun_resolver.sh
 csharp/mun_proxy/mun_proxy.sh
 csharp/mun_room/mun_room.sh
をそれぞれ開き、20行目付近にあるupdate_csprojメソッドについて以下のように書き換える

update_csproj()
{
    # ターゲット情報
    target="$(xmllint --xpath "/Project/PropertyGroup/TargetFramework/text()" ${PROJ_NAME}.csproj)"
    if [ $1 = "3.1" ]; then
        if test ${target} != "netcoreapp3.1"; then
            # 2.0 => 3.1に書き換え
            xmllint --encode utf-8 ${PROJ_NAME}.csproj | sed -i -e "s/netcoreapp2.0/netcoreapp3.1/" ${PROJ_NAME}.csproj
            # 2.1 => 3.1に書き換え
            xmllint --encode utf-8 ${PROJ_NAME}.csproj | sed -i -e "s/netcoreapp2.1/netcoreapp2.1/" ${PROJ_NAME}.csproj
        fi
    else
        echo "未対応のCoreバージョンです"
    fi
}

この上でビルドすれば現状warningなしでバージョン置換ができると思います。

...