既存の .NET COBOL プロジェクト ファイルのアップグレード

本トピックには、最新リリースを使用して以前のバージョンの Visual COBOL で作成された .NET COBOL プロジェクトを編集する場合に関する重要な情報が含まれています。

リリース 9.0 での既存のプロジェクトのアップグレード

リリース 9.0 では次の変更が導入されています。

  • NuGet パッケージの変更 - リリース 9.0 では、特定の Micro Focus 機能のアセンブリを含む複数の NuGet パッケージがインストールされます。新しい .NET プロジェクト、および 9.0 で編集またはビルドした既存のプロジェクトは、プロジェクトの基本機能を含むコア パッケージ MicroFocus.COBOL.Runtime.Core にリンクされます。追加パッケージ (特定のファイル ハンドラー、COBOL Accept/Display など) はプロジェクトに手動で追加する必要があります。

    9.0 より前のリリースで作成された既存の .NET COBOL プロジェクトをビルドすると、ビルド エラーが発生する可能性があります。古いプロジェクトとの互換性を確保するために、9.0 では、MicroFocus.COBOL.Runtime メタパッケージも用意されています。これを有効にするか、必要な新しい NuGet パッケージを手動で追加できます。

    詳細については、「.NET アプリケーションでの Micro Focus アセンブリのパッケージ化」を参照してください。

  • 新しい SDK バージョン - Micro Focus SDK バージョンがリリース 8.0 のバージョン 2.0 からバージョン 2.1 に変更されました。

    SDK を更新すると、プロジェクトが MicroFocus.COBOL.Runtime.Core パッケージを参照することになります。次の方法により、変更に起因するビルド エラーの発生を回避できます。

    • 以前のリリースで作成された .NET プロジェクトを開くと、Visual Studio で、global.json ファイルが必要なビルド SDK の以前のバージョンをターゲットにしているというメッセージが情報バーに表示されます。このリリースでプロジェクトを編集できるようにするには、[Update and Reload Solution] をクリックして SDK を更新します。次に、コア機能以外に必要な NuGet パッケージをプロジェクトに手動で追加するか、MicroFocus.COBOL.Runtime メタパッケージを有効にする必要があります。「.NET アプリケーションでの Micro Focus アセンブリのパッケージ化」を参照してください。
    • コマンド ラインから既存のプロジェクトをコンパイルすると、SDK によってプロジェクトが MicroFocus.COBOL.Runtime.Core にリンクされる際にビルド エラーが発生する可能性があります。次のいずれかの方法で、新しい動作をオフにしてビルド エラーを回避できます。
      • 環境変数 DisableCOBOLRuntimeMetapackage=false を指定する。
      • コマンド ラインでコンパイルする際に、環境変数msbuild.exe /p:DisableCOBOLRuntimeMetapackage=false を追加する。
      • テキスト エディターでプロジェクト ファイルを編集して、<DisableCOBOLRuntimeMetapackage>false</DisableCOBOLRuntimeMetapackage>PropertyGroup セクションに追加する。これは、Visual Studio 内のプロジェクトの [Application] プロパティ ページで [Use COBOL Runtime Metapackage] をオンにすることと同じです。

リリース 8.0 以降へのアップグレード

Visual Studio 2022 では、プロジェクトを正常に開いてビルドするには、.NET 6 プロジェクトの global.json ファイルがソリューション ファイルのディレクトリ レベルに配置されている必要があります。以前のバージョンの Visual Studio では、このファイルはプロジェクト フォルダーなどのソリューションのサブフォルダーに配置されていました。

この変更により、global.json ファイルがソリューション ファイルのディレクトリ レベルにない場合、以前のリリースからアップグレードした既存の .NET Core 3.1 COBOL プロジェクトに影響を与える可能性があります。また、既存のソリューションに追加する .NET 6 COBOL プロジェクトにも影響します。

このような場合、MSBuild コマンド ラインからビルドする際に、次のエラー メッセージが表示されることがあります (プロジェクトの読み込みに失敗した場合は、Visual Studio 内の出力ウィンドウに表示されます)。

"The SDK 'MicroFocus.Sdk' specified could not be found"

この問題を回避するには、global.json ファイルをソリューション ファイルのディレクトリ レベルに移動する必要があります。

Visual Studio 2022 で作成された新しい .NET 6 COBOL ソリューションおよびプロジェクトでは、必要な場所に global.json ファイルが作成されます。

7.0 より前のリリースからのアップグレード

dotnet コマンドを使用して、7.0 より前のバージョンの Visual COBOL で作成された .NET プロジェクト (以前の .NET Core プロジェクト) を操作することはできません。代わりに、Visual Studio IDE および msbuild コマンドを使用してそのようなプロジェクトを引き続き利用するか、dotnet コマンドを使用できるようにそのようなプロジェクトをアップグレードできます。

7.0 より前のプロジェクト ファイルをアップグレードして、dotnet コマンドでプロジェクトを使用できるようにするには、次の手順を実行する必要があります。

  1. プロジェクト (.cblproj) ファイルを次のように変更します。
    1. 最初の行を確認します。
      <Project Sdk="Microsoft.NET.Sdk">
      上記を次のように変更します。
      <Project Sdk="MicroFocus.Sdk"
    2. 次の文字列で始まる 2 行を削除します。
      <LanguageTargets
  2. プロジェクト フォルダーに global.json ファイルを作成して、使用する Micro Focus プロジェクト SDK のバージョンを定義します。次に例を示します。
    {
        "msbuild-sdks": {
            "MicroFocus.Sdk": "1.0.16"
        }
    }

    これを行うために .cblproj ファイルおよび global.json ファイルを変更する方法の詳細については、Microsoft の使い方に関するドキュメントUse MSBuild project SDKs」を参照してください。