¿Cuáles son mis opciones para compartir código entre proyectos DNX / ASP.NET 5 (project.json / xproj) y otros proyectos C # (csproj) dentro de una única solución?
Estoy experimentando con Visual Studio 2015 RC, específicamente buscando cambiar al nuevo marco ASP.NET 5, la estructura del proyecto y el nuevo DNX que ejecuta aplicaciones ASP.NET 5.
Mi empleador tiene muchas soluciones existentes dirigidas a .NET Framework 4.5.2. En nuestras soluciones existentes de Visual Studio, podríamos tener los siguientes proyectos:
[Solution] Sample.sln
[Folder] src
[Project] ClassLibrary.csproj
[Project] WindowsService.csproj
[Project] WebApplication.csproj
[Folder] test
[Project] ClassLibrary.UnitTests.csproj
...
En este escenario,ClassLibrary.csproj
es una biblioteca de clase C # que contiene código compartido. Es una dependencia de / referenciada por ambosWindowsService.csproj
yWebApplication.csproj
.
No estamos tratando específicamente de dirigirnos a .NET Core,dnxcore50
. En esta etapa, nos complace dirigirnos a .NET Framework,dnx451
. Sin embargo, estamos tratando absolutamente de aprovechar las nuevas características de ASP.NET 5 y la estructura de proyecto asociada.
A continuación hay algunas opciones que he pensado pero ambas tienen problemas.
Opción 1Cuando reemplazamos elWebApplication.csproj
proyecto anterior con un nuevo proyecto ASP.NET 5 DNXWebApplication-dnx
entonces todavía podemos hacer referencia alClassLibrary.csproj
tanto de este nuevo proyecto DNX como de los existentesWindowsService.csproj
proyecto. Sin embargo, surgen algunos problemas:
Este enfoque significa cualquier cambio en el código enClassLibrary.csproj
necesita una reconstrucción para ser visible en la ejecuciónWebApplication-dnx
. Esto no es sorprendente, pero significa que no obtenemos beneficios completos de compilación desde la fuente paraWebApplication-dnx
.
No podemos apuntar fácilmente a otros marcos, p. Ej.dnxcore50
. Como anteriormente, esto no es específicamente un objetivo en esta etapa.
Si reemplazamosClassLibrary.csproj
con un proyecto de biblioteca de clase DNX ^ClassLibrary-dnx
entonces los problemas en la opción 1 no se aplican. Este enfoque parece ser más acorde con la forma en que el tiempo de ejecución de .NET y las tecnologías asociadas como ASP.NET se empaquetarán en el futuro.
Sin embargo, no puedo encontrar una forma de referenciaClassLibrary-dnx
deWindowsService.csproj
. Si este enfoque es viable, imagino que la solución tiene algo que ver con la opción de nivel de proyecto paraProduce outputs on build
y luego haciendo referencia al.nupkg
o tal vez incluso el.dll
que se produce durante la construcción Sin embargo, no puedo ver una manera limpia de lograr esto a través de las herramientas.
^ Los proyectos de biblioteca de clase DNX se llamanClass Library (Package)
en VS 2015 RC. Este tipo de proyecto se llamaba anteriormenteASP.NET Class Library
en los CTP.
Según la información anterior que estoy buscando:
Algunos comentarios sobre mis opciones de escenario y problemas.
Sugerencias para otras opciones que no he pensado.
Quizás una indicación de qué enfoque se debe utilizar para avanzar.