Was sind meine Optionen für die gemeinsame Nutzung von Code zwischen DNX / ASP.NET 5-Projekten (project.json / xproj) und anderen C # -Projekten (csproj) innerhalb einer einzelnen Lösung?

Szenari

Ich experimentiere mit Visual Studio 2015 RC, insbesondere mit dem Wechsel zum neuen ASP.NET 5-Framework, der Projektstruktur und dem neuen DNX, auf dem ASP.NET 5-Anwendungen ausgeführt werden.

ei meinem Arbeitgeber gibt es zahlreiche Lösungen für .NET Framework 4.5.2. In unseren vorhandenen Visual Studio-Lösungen haben wir möglicherweise die folgenden Projekte:

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

In diesem Szenario,ClassLibrary.csproj ist eine C # -Klassenbibliothek, die gemeinsam genutzten Code enthält. Es ist eine Abhängigkeit von /, auf die von beiden @ verwiesen wirWindowsService.csproj undWebApplication.csproj.

Wir versuchen nicht speziell, .NET Core als Ziel zu haben,dnxcore50. In dieser Phase richten wir uns gerne an .NET Framework,dnx451. Wir versuchen jedoch unbedingt, die neuen Funktionen von ASP.NET 5 und die damit verbundene Projektstruktur zu nutzen.

Below sind einige Optionen, über die ich nachgedacht habe, aber beide haben Probleme.

Option

Wenn wir das @ ersetzWebApplication.csproj Projekt oben mit einem neuen ASP.NET 5 DNX-ProjektWebApplication-dnx dann können wir noch auf das @ verweisClassLibrary.csproj aus diesem neuen DNX-Projekt und dem vorhandenenWindowsService.csproj project. Es treten jedoch einige Probleme auf:

Dieser Ansatz bedeutet Änderungen am Code inClassLibrary.csproj brauche einen Neuaufbau, um im laufenden @ sichtbar zu seWebApplication-dnx. Dies ist nicht überraschend, bedeutet aber, dass wir für @ keine vollständigen Compile-from-Source-Vorteile erhalteWebApplication-dnx.

Wir können andere Frameworks, z.dnxcore50. Wie oben erwähnt, ist dies zu diesem Zeitpunkt noch kein spezifisches Ziel.

Option

Wenn wir ersetzenClassLibrary.csproj mit einem DNX-Klassenbibliotheksprojekt ^ClassLibrary-dnx dann treffen die Probleme in Option 1 nicht zu. Dieser Ansatz scheint besser mit der Art und Weise übereinzustimmen, in der die .NET-Laufzeit und die zugehörigen Technologien wie ASP.NET in Zukunft gepackt werden.

ch kann jedoch keinen Weg finden, auf @ zu verweiseClassLibrary-dnx vonWindowsService.csproj. Wenn dieser Ansatz durchführbar ist, hat die Lösung meiner Meinung nach etwas mit der Option auf Projektebene für @ zu tuProduce outputs on build und dann das @ referenzier.nupkg oder vielleicht sogar das.dll das wird während des Builds erzeugt. Ich kann jedoch keinen sauberen Weg finden, dies über das Werkzeug zu erreichen.

^ DNX-Klassenbibliotheksprojekte heißenClass Library (Package) in VS 2015 RC. Dieser Projekttyp hieß zuvorASP.NET Class Library in den CTPs.

Zusammenfassun

Basierend auf den obigen Informationen, die ich suche:

Einiges Feedback zu meinen Szenariooptionen und -problemen.

Vorschläge für andere Optionen, an die ich nicht gedacht habe.

Möglicherweise ein Hinweis darauf, welcher Ansatz in Zukunft verwendet werden sollte.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage