2017-02-23 17 views
3

VS2015>新規プロジェクト> .Netコアに「クラスライブラリ(.NETコア)」のテンプレートがあります.NetCoreクラスライブラリは.Netスタンダードを参照しているのはなぜですか?

.NETコアWeb APIプログラムでこのライブラリを参照しようとしても、クラスライブラリのテンプレートが.NETStandard v1.6を参照していることに気付きました。そして私の.NET Core APIは、それを参考にしません。私は、ライブラリをナゲットパッケージとして構築することを避けようとしていました。

コアテンプレートがコアを参照していない理由についてのアイデアはありますか? すばやい回避策に関するアイデアはありますか?

更新:最初のビルド私は、インスタンスVS異なるで、

"netcoreapp1.0": { "imports": [ "dotnet5.6", "portable-net45+win8" ]

その後、私が作成しproject.jsonに枠組みを変更する前に は、新しい "クラスライブラリ(.NETコア)" を開設、新しい "ASP.NETコアWebアプリケーション(.NETコア)"。

私は今netcoreapp1.0フォルダ内に、新しいクラスライブラリの.dllファイルへの参照を追加し、私はまだ同じエラーを取得しようとしました:

.NET Core Projects only support referencing .NET framework assemblies in this release.

+0

にそれについてのすべてを忘れて、中にゼロから始めることはできませんなぜnetcoreapp1.0プロジェクトは(static void Main()のようなプログラムのエントリが含まれている)を実行することができますDLLに

をコンパイルしますので、それは理にかなっていますVisual Studio 2017.貴重な時間を無駄にしないでください。 –

+1

@LexLiしかし、フードの下で何が起こっているのか知っているのはまだ良いです:) –

+0

@goatyはい、私は私の答えに書いたように別のフレームワークで使用されることを目指しているライブラリを書くつもりなら、特に –

答えて

1

問題を修正する方法あなたはAPIのための基準としての.dllを追加しようとすると

I was trying to avoid building the library as a nuget package.

Any ideas on why a Core template isn't referencing core? Any ideas on quick workarounds?

、あなたのエラーメッセージは、そのクラスライブラリを使用するためにパッケージを作成する必要がどこかを言う必要があります。それはin the documentationと記載されています。

しかし、あなたのクラスライブラリが現在あなたのAPIプロジェクトでのみ使用されている場合など、パッケージを作成したくない場合、クラスライブラリをソリューションのプロジェクトとして構築するのが最も簡単です人生。これを行うには、ソリューションフォルダにコードをコピーして貼り付け、プロジェクトとしてインクルードします。

いくつかのバージョンについての説明やフレームワーク

コアテンプレート(私はあなたが.NETのコアAPIについて話していると思います)を見てみましょう

"frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ 
      "dotnet5.6", 
      "portable-net45+win8" 
     ] 
    } 
    } 

とproject.jsonを作成すべきかこの行は以下を担当します:

  • netcoreapp1.0frameworksのAPIは、 amework .NET Core 1.0。その.NET Coreフレームワークのバージョンでは、.NET Standard 1.6(the list here)が実装されています。クラスライブラリでもこの.NET標準1.6が使用されます。クラスライブラリが使用している.NET Standard 1.6を知ることで、後でWebアプリケーション/モバイルアプリケーション/ Windowsソフトウェアを開発するときに使用できる.NET Core/Xamarin/.NET Frameworkのバージョンを選択できるようになります(例:
  • )。
  • importsリストの他のフレームワーク/アプリケーションがthis linkdotnet5.6portable-net45+win8によると
  • を使用することができ、パッケージのバージョンは廃止され、netstandardバージョンが代わりに使用する必要があります。 dotnet5.6はまだ私のために神秘的です。 portable-net45+win8netstandard1.0に相当します。これを許可すると、アプリケーションで.NET Standard 1.0を使用してパッケージを使用できることを意味します。 .NET Core 1.0は.NET Standard 1.6から始まっているので、実際にはこれらの2行を削除するので、これは問題になる可能性があります。

私はコメントを歓迎する以上のものです!

1

他の回答(これ以前)のように思われませんでした。 .NET Standardは、実質的にすべての.NETランタイム(フルフレームワーク、.NETコア、Mono Xamarinなど)で実行できる標準APIのセットに従うため、.NETクラスライブラリを作成する方法です。

.NET coreライブラリを作成したい場合は、.NET Standardライブラリを効果的に作成しています。差別化する必要はありません。 .NET standard 1.6への参照は、コンパイラに何をコンパイルするかを知らせることです。 netcoreapp1.0は基本的には.NET coreコンソールアプリ向けです。あなたは、ライブラリ:)

+1

。私はそれとは反対のことを言わなかった。しかし、 'netcoreapp1.0'は.NET Coreコンソールアプリケーションだけではありません。このフレームワークを使用すると、MVCを上から実行できます。 –

+0

私のクラスライブラリが.NETStandard 1.6の場合、私はまだ理解していません。なぜ.NETCoreAppへの参照としてロードできないのですか? –

+0

@ Steve'Kepano'EggeringあなたのAPIはクラスライブラリを使用できます。あなたには2つの方法があります。まず、クラスライブラリをパッケージにして参照します。第2の方法:パッケージを作成したくない場合、唯一の解決策は、クラスライブラリプロジェクトをAPIのVisual Studio Solutionに "含める"ことです。私は自分の答えを更新しました。 –

関連する問題