46

シナリオ

私は Visual Studio 2015 RC を試しています。具体的には、新しい ASP.NET 5 フレームワーク、プロジェクト構造、および ASP.NET 5 アプリケーションを実行する新しい DNX への切り替えを検討しています。

私の雇用主には、.NET Framework 4.5.2 をターゲットとする既存のソリューションが多数あります。既存の Visual Studio ソリューションには、次のプロジェクトがある場合があります。

[Solution] Sample.sln
    [Folder] src
        [Project] ClassLibrary.csproj
        [Project] WindowsService.csproj
        [Project] WebApplication.csproj
    [Folder] test
        [Project] ClassLibrary.UnitTests.csproj
        ...

このシナリオでClassLibrary.csprojは、共有コードを含む C# クラス ライブラリです。WindowsService.csprojこれは、との両方によって参照される / の依存関係ですWebApplication.csproj

特に .NET Core をターゲットにしようとしているわけではありませんdnxcore50。この段階では、.NET Framework を対象として満足していますdnx451。ただし、ASP.NET 5 の新機能と関連するプロジェクト構造を最大限に活用しようとしています。

以下は私が考えたいくつかのオプションですが、どちらにも問題があります。

オプション1

WebApplication.csproj上記のプロジェクトを新しい ASP.NET 5 DNX プロジェクトに置き換えても、この新しい DNX プロジェクトと既存のプロジェクトの両方からWebApplication-dnx参照できます。ただし、いくつかの問題が発生します。ClassLibrary.csprojWindowsService.csproj

  1. ClassLibrary.csprojこのアプローチは、再構築が必要なコードへの変更が、実行中のWebApplication-dnx. これは驚くべきことではありませんが、WebApplication-dnx.

  2. 他のフレームワークを簡単にターゲットにすることはできませんdnxcore50。上記のように、これはこの段階では具体的な目標ではありません。

オプション 2

ClassLibrary.csprojDNX クラス ライブラリ プロジェクト^に置き換えると、ClassLibrary-dnxオプション 1 の問題は適用されません。このアプローチは、今後 .NET ランタイムと ASP.NET などの関連テクノロジがパッケージ化される方法とより調和しているように思われます。

ClassLibrary-dnxしかし、から参照する方法が見つかりませんWindowsService.csproj。このアプローチが実行可能な場合、ソリューションはプロジェクト レベルのオプションと関係があり、ビルド中に生成される、またはおそらくProduce outputs on buildを参照すると思います。ただし、ツールを使用してこれを実現するクリーンな方法はわかりません。.nupkg.dll

^ DNX クラス ライブラリ プロジェクトはClass Library (Package)VS 2015 RC で呼び出されます。このプロジェクト タイプは、以前ASP.NET Class Libraryは CTP で呼び出されていました。

概要

上記の情報に基づいて、私は探しています:

  1. シナリオのオプションと問題に対するフィードバック。

  2. 私が考えていなかった他のオプションの提案。

  3. おそらく、今後どのアプローチを使用する必要があるかを示しています。

4

1 に答える 1

22

EntityFrameworkの機能を見てみましょう。

これらは、net45、.NETPortable、Version=v4.5、Profile=Profile7、frameworkAssemblies の 3 つの TFM をターゲットにしており、同じフォルダーにcsproj と xproj の両方があります。

基本的に、各プロジェクトには 2 つのプロジェクト ファイルがあります。

ただし、WindowsService.csproj から ClassLibrary-dnx を参照する方法が見つかりません。

残念ながら、それはまだ不可能です。csproj は xproj からのみ参照できます。その逆はできません。(1) EF のように xproj と csproj の両方を使用するか、(2) csproj から NuGet パッケージを参照します。

代替手段 (2) を実行する場合は、xproj の出力をフォルダーに設定し、それを NuGet フィードとして追加できます。

于 2015-05-21T15:56:07.323 に答える