Какие есть варианты для совместного использования кода между проектами 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, Как и выше, это не является конкретной целью на данном этапе.

Вариант 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 в ОСАГО.

Резюме

Основываясь на информации выше, я ищу:

Некоторые отзывы о вариантах и ​​проблемах моего сценария.

Предложения по другим вариантам я не придумал.

Возможно, указание того, какой подход следует использовать, двигаясь вперед.

Ответы на вопрос(1)

Ваш ответ на вопрос