Какие есть варианты для совместного использования кода между проектами DNX / ASP.NET 5 (project.json / xproj) и другими проектами C # (csproj) в рамках одного решения?
Я экспериментирую с Visual Studio 2015 RC, обращая особое внимание на переключение на новую платформу ASP.NET 5, структуру проекта и новый DNX, на котором работают приложения ASP.NET 5.
У моего работодателя есть много существующих решений, ориентированных на .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 DNXWebApplication-dnx
тогда мы все еще можем ссылаться наClassLibrary.csproj
как из этого нового проекта DNX, так и из существующихWindowsService.csproj
проект. Однако возникают некоторые проблемы:
Этот подход означает любые изменения в коде вClassLibrary.csproj
нужно восстановить, чтобы быть видимым в бегWebApplication-dnx
, Это не удивительно, но означает, что мы не получаем полных преимуществ компиляции из исходного кода дляWebApplication-dnx
.
Мы не можем легко нацеливаться на другие структуры, напримерdnxcore50
, Как и выше, это не является конкретной целью на данном этапе.
Если мы заменимClassLibrary.csproj
с проектом библиотеки классов DNX ^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
в ОСАГО.
Основываясь на информации выше, я ищу:
Некоторые отзывы о вариантах и проблемах моего сценария.
Предложения по другим вариантам я не придумал.
Возможно, указание того, какой подход следует использовать, двигаясь вперед.