Сценарий
Я экспериментирую с 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
- это библиотека классов С#, содержащая общий код. Это зависимость /, на которую ссылаются как WindowsService.csproj
, так и WebApplication.csproj
.
Мы специально не пытаемся настроить .NET Core, dnxcore50
. На этом этапе мы счастливы ориентироваться на .NET Framework, dnx451
. Однако мы абсолютно пытаемся использовать новые возможности ASP.NET 5 и соответствующую структуру проекта.
Ниже приведены некоторые параметры, о которых я думал, но у обоих есть проблемы.
Вариант 1
Когда мы заменим проект WebApplication.csproj
выше новым проектом ASP.NET 5 DNX WebApplication-dnx
, мы можем по-прежнему ссылаться на ClassLibrary.csproj
как из этого нового проекта DNX, так и из существующего проекта WindowsService.csproj
. Однако возникают некоторые проблемы:
-
Этот подход означает, что любые изменения кода в
ClassLibrary.csproj
требуют, чтобы перестройка была видимой в запускеWebApplication-dnx
. Это не удивительно, но мы не получаем полной выгоды от компиляции с источника дляWebApplication-dnx
. -
Мы не можем легко нацелить другие фреймворки, например.
dnxcore50
. Как и выше, на данном этапе это не является конкретной целью.
Вариант 2
Если мы заменим 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
в CTP.
Резюме
Основываясь на приведенной выше информации, я ищу:
-
Некоторые отзывы о моих сценариях и проблемах.
-
Предложения по другим параметрам, о которых я не думал.
-
Возможно, указывается, какой подход следует использовать для продвижения вперед.