2016-12-27 5 views
4

WPF(.NET 4.6)アプリケーションと.NETコアアプリケーションの間でプロジェクトを共有します。これを行うために、私はポータブルライブラリを最初に作成し、それをVisual Studio 2015で.NET標準バージョン1.3に変換することによって.NET標準ライブラリを作成しました。.NETスタンダードを使用している場合、Nugetパッケージは出力にコピーされません。

しかし、.NET標準ライブラリはEntity Framework(たとえば)を参照する必要があります。したがって、この依存関係をproject.jsonに追加しました。すべてがうまく構築されます。しかし、実際にアプリケーションを実行すると、実際にEntity Frameworkライブラリを使用してデータをロードしようとするとすぐにFile Not Found例外が発生します。 .NETStandardを使用している場合のNugetパッケージは出力ディレクトリにコピーされないため(これは通常の.NETの場合はnugetと異なります)、例外の理由がわかります。

.NET Stanardライブラリを使用して.NET 4.6プロジェクトから参照する場合、これを修正するか、または出力するためにコピーするようにNugetの依存関係を取得するにはどうすればよいですか? (以下は、私のproject.jsonであり、必要に応じてさらにコードを追加することができます)。

{ 
    "supports": {}, 
    "dependencies": { 
    "Microsoft.EntityFrameworkCore.Design": "1.1.0", 
    "Microsoft.EntityFrameworkCore.Sqlite": "1.1.0", 
    "Microsoft.NETCore.Portable.Compatibility": "1.0.1", 
    "NETStandard.Library": "1.6.1" 
    }, 
    "frameworks": { 
    "netstandard1.3": {} 
    } 
} 
+0

Visual Studio 2017 RCに切り替えてください。これは、プロジェクト参照シナリオを簡略化するためにWindows上で唯一の環境です。 –

答えて

1

Microsoftが最終的に、これは、NuGetバージョン4.0.1で、首を長くして、VS 2017船の後NuGet 4に最初の更新の問題とwill fixそれであると認めました。

最も簡単な解決策は、レガシープロジェクトに<RestoreProjectStyle>PackageReference</RestoreProjectStyle>を追加することです。

ただし、according to Rob Relyea MSはRTMの後でこのプロパティを無視するため、もう1つの回避策は<PackageReference Update="PlaceholderToConvinceThisProjectToGetTransitivePackageReferenceFromProjectReferences"/>です。

関連する問題