2017-11-16 12 views
2

と2.0の互換性はありません、私は次のことを含むsolcutionを作成しました:ネットコアアプリケーションは、Visual Studio 2017で、.NETの標準2.0ライブラリ

  • ASP.NetコアWebアプリケーションプロジェクト(ASP.Net MVC)
  • .Net標準ライブラリとして作成された2つのクラスライブラリプロジェクト

デフォルトでは、これらのクラスライブラリを対象としています.Net Standard 2.0、Webアプリケーションは.Net Core 1.1をターゲットにしています。

追加されたプロジェクトの依存性 - Webアプリケーションは、プロジェクトの依存関係として2つのクラスライブラリの両方を持っています(コア機能が含まれているため、Webアプリケーションはフロントエンドに過ぎません)。

理論的には、VSが適切なデフォルトを選択しているはずです。しかし、それはコンパイルされません。私はこのようなエラーを取得しています:

Error CS1705 
Assembly 'Entities' with identity 'Entities, Version=1.0.0.0, 
Culture=neutral, PublicKeyToken=null' uses 'System.Runtime, Version=4.1.2.0, 
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' which has a higher version 
than referenced assembly 'System.Runtime' with identity 'System.Runtime, 
Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 

私はSystem.Runtimeへの参照を変更する方法を知って、そしてそうするためのVSにはオプションが見つからないはありません。

オーケー - ネットコア本当に2.0(.NETのコア1.1でも公式ネット規格概要グラフィックに表示されていないにもかかわらず、official MS Github documentationを参照してくださいので、私はどのように私たちすることができます。ネット規格で意味を行うべきではありません1.1 確かに?)。

これを変更して、Webアプリケーションのターゲットを.Net Core 2.0に変更して、すべてのものが2.0の目標を達成するようにしましょう。 .NET Core 2.0へのフレームワーク、および再構築ソリューション (私のVSインスタンスはデフォルトではすべての再構築時にNugetパッケージを復元するように設定されています)

もう一度動作しません。異なるエラーこの時間 - ここでは、その種のいくつかのエラー:.NETのコアツールの以前のバージョン(VS 2015)では

Error NU1605 Detected package downgrade: System.Net.Primitives from 4.3.0 
    to 4.0.11. Reference the package directly from the project to select a 
different version. 
    UI.Web (>= 1.0.0) -> Microsoft.VisualStudio.Web.BrowserLink (>= 1.1.2) -> 
    Microsoft.AspNetCore.Hosting.Abstractions (>= 1.1.2) -> NETStandard.Library 
    (>= 1.6.1) -> System.Net.Primitives (>= 4.3.0) 
    UI.Web (>= 1.0.0) -> Microsoft.VisualStudio.Web.BrowserLink (>= 1.1.2) -> 
    System.Net.Primitives (>= 4.0.11) UI.Web C:\Source\Projects\Test 
    \UI.Web\UI.Web.csproj 

は、依存関係のバージョンの微調整を可能に多くのJSONファイルが存在しなかったが、これはもはやに適用されますVS 2017 - csprojは唯一のものであり、XML形式であり、上記のエラーのパッケージのいずれも参照していません。

これはどういう意味ですか? .Net Core 2.0は.Net Standard 2.0ライブラリと互換性がありません。

面白いことに、この種のアプリを初めて製作したばかりで、ほんの数か月前にはすぐに使えました。私は

  • の.NET標準ライブラリがネット標準であることを見つける正常に動作し、古いアプリに見ると1.6
  • ASP.NetコアWebアプリケーションは、.NETのコアに1.1

変更されましたそれは私の新しいプロジェクトで - それはうまくいっています。

しかし、これはまだ、これらの問題を提起:

  1. は、.NETのコア2.0は、.NET標準2.0のライブラリと互換性がありませんか?
  2. これはVS 2017の問題で、.Net Core と.Net Standardライブラリのデフォルトのフレームワークは、あたかもdovetailではないか、何かですか? 私は/ configureを設定できますか?
+0

それぞれの.NET Coreおよび.NET Standardアプリケーションは、UbuntuまたはMacOSのいずれかでCLIツールを使用して構築されていますが、この問題は発生していません(初期パブリックプレビューから各ビルドを使用しました2.0.0のRTMまで)。おそらくそれはVS 2017の問題です.Core 2.0はStandard 2.0に完全に準拠しているので、そうは思いません。どのバージョンのVS 2017を使用していますか? –

+0

私はVS2017コミュニティ、バージョン15.3.0を使用しています。この問題をテストするためのテストプロジェクトをいくつか作成しました。毎回発生します。 – nepdev

+0

うーん...それはかなり奇妙です。 AzureのホストされたVMをスピンアップして再作成しようとするかもしれません。その間、私はあなたのVSインスタンスを更新しようとする価値があるのだろうかと思います。コントロールパネルのプログラムの追加と削除に進み、VSを見つけて変更を選択して、インストーラが更新してからインストールを更新できるようにします。 –

答えて

0

明らかに、.NET Core 2.0は.NET標準2.0に準拠しています。

ただし、NU1605 Detected package downgradeなどのエラー/警告メッセージが表示されることがあります。これは、例えばlog4net 2.0.8を参照する場合にも同様に起こります。

NU1605

は、デフォルトでは、Visual Studioでのエラーとして扱われます、しかし、実際には警告である2017年

<WarningsAsErrors>NU1605</WarningsAsErrors>のようなものを検索)あなたはcsprojファイルを編集して、警告にこのバックを変更することができます

かVisual Studioからプロジェクトプロパティ>ビルド>エラーとして警告を処理します。

関連する問題