web-dev-qa-db-ja.com

.NET Coreプロジェクトで.NET Frameworkプロジェクトを参照するにはどうすればよいですか?

.NET Coreの使用を開始し、アプリケーションとライブラリを徐々に移行したいと考えています。ただし、コードベース全体を現実的にアップグレードして.NET Coreを使用してから、実稼働環境で大量のアプリケーションをテストおよび展開するプロセスを実行することはできません。

例として、新しい.NET Coreアプリケーションを作成し、.NET Frameworkプロジェクトの1つを参照しようとすると、次の結果が得られます。

次のプロジェクトは参照としてサポートされていません。-Foobar.NetFrameworkには、現在のプロジェクトFoobar.NetCoreのターゲットと互換性のないターゲットフレームワークがあります。

Foobar.NetCore:.NETCoreApp、Version = v1.0

Foobar.NetFramework:.NETFramework、Version = v4.5

新しい.NET Coreアプリケーションを作成し、既存の.NET Frameworkライブラリを参照することはできますか?もしそうなら、それを行うためのプロセスは何ですか? Microsoftのドキュメントを調べてGitHubで問題を検索するのに何時間も費やしましたが、これを達成する方法や、このプロセスに対する彼らの長期的なビジョンについて公式な情報は見つかりません。

24

はい、現在同じことを試みています。秘Theは、同じ.NETフレームワークをサポートしていることを確認することです。 project.jsonファイル内で、フレームワークが含めるプロジェクトのフレームワークと一致することを確認します。例えば:

"frameworks": {
    "net46": {  --This line here <<<<
      "dependencies": {
        "DomainModel": {
          "target": "project"
        },
        "Models": {
          "target": "project"
        }
      }
    }
  },

参考:これを実現するには、.NET Coreまたは古いプロジェクトのフレームワークを変更する必要がある場合があります。 .NET Coreは、上記のようにproject.jsonファイルを編集するだけで変更できます。プロジェクトを右クリックしてプロパティを開くと、.NETプロジェクトでも同じことができます。そこでフレームワークレベルを変更します。

2つのプロジェクトフレームワークを一致させたら、それらを含めることができるはずです。幸運を!

11
aholtry

古い質問ですが、.NetStandard 2.0および.netcore 2.0およびvs2017.3のリリースにより、ゲームが変更されました。

.NETCore 2.0でFull .NET Framework(TFM)を使用できますが、どのようにですか?

  1. Visual Studio 2017.3では、.NetCore2プロジェクト内から完全な.NET Framework(任意のバージョン)を直接参照できます。

  2. .NetStandard2クラスライブラリをビルドし、TFMを参照できます。次に、.NetCore2プロジェクトから.NetStandard2ライブラリを参照します。

たとえば、.NetStandard2からjson.net net45を参照します。フォルダーを参照し、バージョンnet45(netstandard1.3ではありません)を選択します

下の画像の依存関係をご覧ください。黄色の警告は表示されていません。

enter image description here

  1. Nugetライブラリを.Netstandard 2に移植する準備ができていない場合でも、net461に準拠するライブラリ内の任意のAPIを使用できます。

リンク付きの.NET Core 2/Standard 2.0の発表を引用:

.NET Core 2.0は、バージョン4.6.1までの.NET Framework用に構築されたライブラリを自由に参照できます。

ただし、一部のライブラリは、.NET Coreで利用できないAPIメソッドを使用しようとすると、実行時に失敗する場合があります

参照: 。NET Core Appターゲット.NET framework 4.5.2 on Linux

.NET Coreでは利用できないサードパーティの.NETライブラリまたはNuGetパッケージを使用する必要がある

そのため、ライブラリまたはNuGetパッケージが.NET Standard/.NET Coreで利用できないテクノロジを使用する場合にのみ、.NET Frameworkを使用する必要があります。

参照: サーバーアプリの.NET Coreと.NET Frameworkの選択

Visual Studio 2017 15.3を使用して、.NET Standardライブラリから.NET Frameworkライブラリを参照できるようになりました。この機能は、.NET Frameworkコードを時間をかけて.NET Standardまたは.NET Coreに移行するのに役立ちます(バイナリで開始してからソースに移動します)。また、.NET Frameworkライブラリでソースコードにアクセスできなくなったり、ソースコードが失われたりする場合にも役立ち、新しいシナリオで引き続き使用できます。

リファレンス: 。NET Core 2.0の発表

9
M.Hassan