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?
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.
OptionWenn 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.
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.
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.