2016-07-22 53 views
6

私はいくつかの共有プロジェクトを作成し、これらを希望するすべての異なるプロジェクトタイプで共有できるかどうかをテストしています。私はこれまでのところ(時には少しの回避策で)それらのすべてを管理しましたが、.NET Core Class Libraryを使用して実際に役立つ方法をまだ理解できません。.NET CoreクラスライブラリでVisual Studio共有プロジェクトを参照する方法

私はVisual Studio 2015でそれを行うように見えないので、誰もそれを行う方法を知っていますか?おそらくクラスライブラリのproject.jsonファイルに参照を直接入力することによって?

編集:Visual Studio 2017 RCの時点で、共有プロジェクトは.NETコアプロジェクトと正しく動作します。

答えて

5

Visual Studio 2017 RC以降、共有プロジェクトは.NET Coreプラットフォームでも正しく動作します。

+0

「正しく」という定義に依存していると思います。 私は単体テストを含むプロジェクトを共有しています。また、共有プロジェクトを参照する.NETCoreApp1.0と.NET Framework 4.6.2の2つのテストプロジェクトもあります。 共有テストは.NET Frameworkでのみ表示されます。 .NETCoreApp1.1でも同様です。 –

+1

私は共有プロジェクトを常に.NET Framework 1.1クラスライブラリや.NET Frameworkクラスライブラリなどのdllにバンドルします。次に、そのDLLをテストプロジェクトに参照します。テスト自体がライブラリの特定のバージョンに依存する傾向にあることを考慮して、実際には2つのライブラリ間でテストを共有しようとはしませんでした。とにかく、ビルトインのレポートツールを使用してMicrosoftに報告してもらえますか?Visual Studioを使用して共有プロジェクトのリファレンスを削除できなかった以前のリリースの問題を修正しました。代わりにプロジェクトファイルで) – Arwin

3

これはできないようです - 私は今日それを行う方法を見つけようとしています!

How can I use xproj (asp.net/dotnet core project) with shproj (shared project)?

私はそれから離れて取っている私は何をNET45/46クラスライブラリで直接参照することができますが、共有プロジェクトを作成することができるということです。私が見つけたその最高のSOの質問はここから来て以下の「buildOptions」を追加することにより、project.jsonベースの回避策を使用して、.NETのコアプロジェクトに引き込まなければならないであろう - 上記の例では

"buildOptions": { 
    "compile": { 
    "include": [ 
     "../../TesterShared/**/*.cs" 
    ] 
    } 
} 

を、私の共有プロジェクトは、「TesterShared」と呼ばれ、視覚れますStudioはこれをソリューションの根幹に作りました。これは.NET Coreプロジェクトとは異なり"src"フォルダ内に作成されます(したがって、ダブル "../"親パスのナビゲーション)。

+0

これが機能すれば、当分の間生きていけるものです!その後、次のVisual Studioのアップデートでこれが修正されることを願っています。 – Arwin

+1

あまりにも願っています! project.jsonは明らかに異なる種類の.csprojファイルに置き換えられているので、多分彼らはそれをやるでしょう。私はこのアプローチを使用していますので、問題なく動作していますが、いくつかの制限があります。共有プロジェクトに ".sqlite"データベースファイルを含めたいのですが、問題がありました(copyToOutputオプションがあります。私が望むものを達成するが、それほどではない)。また、共有プロジェクトのファイルを編集する場合は、.NET Coreプロジェクトを強制的に再構築する必要があります。共有プロジェクトの変更には再構築が必要であることはわかりません。 –

+0

ああ、実際にはいくつか迷惑な制限です。ですから、基本的にVisual Studioは共有プロジェクトがリンクされていることを実際には知りませんが、少なくともそれをコンパイルします。 SQLLiteについては、主にClient固有のものと考えています。私は自分の共有プロジェクトにゼロの依存関係を持つように努力し、コンストラクターに注入できる外部すべてのインターフェースを定義するようにします。 私はあなたの答えを受け入れます、ありがとう。 – Arwin

関連する問題