2016-07-22 5 views
6

Я создал несколько общих проектов и тестирую, могут ли они использоваться для всех типов проектов, как я надеюсь и ожидаю. Я до сих пор справлялся со всеми из них (иногда с небольшим обходным решением), но я пока не могу понять, как это сделать с библиотекой классов .NET Core, что было бы действительно полезно.Как ссылаться на общий проект Visual Studio в библиотеке .NET Core Class

Как я не могу это сделать через Visual Studio 2015, кто-нибудь знает, как это сделать? Возможно, напечатав ссылку прямо в файле project.json для библиотеки классов?

EDIT: Начиная с Visual Studio 2017 RC, общие проекты должным образом работают с проектами .NET Core.

ответ

5

Как и Visual Studio 2017 RC, общие проекты должным образом работают на платформе .NET Core.

+0

Я предполагаю, что это зависит от определения «правильно». У меня есть общий проект, который содержит единичный тест и два тестовых проекта: один .NETCoreApp1.0 и один .NET Framework 4.6.2, которые ссылаются на общий проект. Общий тест доступен только в .NET Framework. То же самое происходит с .NETCoreApp1.1. –

+1

Я всегда связываю свои общие проекты в dll, например, библиотеку классов .NET Core 1.1 или библиотеку классов .NET Framework. Затем я ссылаюсь на эту DLL на свой тестовый проект.Учитывая, как сами тесты, как правило, зависят от конкретных версий библиотек, я не пытался фактически обмен тестом между двумя библиотеками. В любом случае, надеюсь, что вы сообщите о своих результатах в Microsoft с помощью встроенного средства отчетности - они только что исправили проблему в последней версии, о которой я сообщал ранее, где вы не могли удалить ссылку на общий проект с помощью Visual Studio (это должно было быть сделано поэтому в файле проекта) – Arwin

3

Кажется, что это невозможно - я пытался выяснить, как это сделать сегодня! Самое лучшее, что я нашел, исходит от этого так вопрос:

How can I use xproj (asp.net/dotnet core project) with shproj (shared project)?

Что я отнимая от него, что я могу создавать совместные проекты, которые можно ссылаться непосредственно NET45/46 библиотек классов, но которые будет втягиваться в проекты .NET Ключевых с использованием project.json на основе методы обхода, добавив следующий «buildOptions» -

"buildOptions": { 
    "compile": { 
    "include": [ 
     "../../TesterShared/**/*.cs" 
    ] 
    } 
} 

в приведенном выше примере, мой общий проект называется «TesterShared» и видео Studio создала это в корне решения - в отличие от проектов .NET Core, которые он создается в папке «src» (следовательно, двойная «../» путь к родительскому пути).

+0

Если это работает, это то, с чем я мог бы жить в настоящее время! Тогда, надеюсь, следующее обновление Visual Studio исправит это. – Arwin

+1

Надеюсь, тоже! Поскольку project.json, по-видимому, заменяется другим видом файла .csproj, возможно, они это сделают. Я использовал этот подход, поэтому я знаю, что он работает нормально, но есть некоторые ограничения. Я хотел включить файл базы данных «.sqlite» в общий проект и имел проблемы с этим (есть опции «copyToOutput», которые могут добиться того, чего я хочу, но не совсем). Кроме того, если вы редактируете файлы в общем проекте, вам необходимо принудительно перестроить проект .NET Core - он не поймет, что изменения в совместном проекте требуют перестройки. –

+0

А, это некоторые досадные ограничения. Таким образом, в основном Visual Studio не знает, что общий проект был связан, но, по крайней мере, скомпилирует его. Что касается объекта SQLLite, я считаю, что это в основном клиентский. Я стараюсь иметь нулевые зависимости в моих общих проектах и ​​будет определять их интерфейсы для всех внешних, которые могут быть введены в конструктор. Я приму свой ответ, спасибо еще раз. – Arwin

 Смежные вопросы

  • Нет связанных вопросов^_^