Страницы

Поиск по вопросам

воскресенье, 2 февраля 2020 г.

Сборка проекта для .NET и .NET Core

#c_sharp #net #visual_studio #visual_studio_2017 #net_core


При написании библиотеки, код которой валиден как для .NET Framework, так и для .NET
Core, приходится создавать два разных проекта со своими зависимостями и практически
одинаковым кодом.

Текущее положение дел (необходимость отдельно обновлять код соседнего проекта и отдельно
его собирать) меня не очень устраивает. И пусть я написал скрипт для автоматизации
этого, знаю, что есть решение получше. Можно как-то модифицировать сам проект в Visual
Studio для достижения таковых целей:


Возможность выбирать целевую платформу
В зависимости от неё указывать символы в духе NETCORE, NET (по
типу DEBUG), дабы в некоторых местах менять платформо-зависимый код
В зависимости от неё использовать определённые пакеты




Как лучше организовать решение поставленной задачи?
    


Ответы

Ответ 1



При использовании SDK based формата для файлов проекта (.csproj) можно указать несколько целевых платформ для сборки в элементе TargetFrameworks. Также можно использовать атрибут Condition для условного указания зависимостей. Test.csproj: Latest Exe netcoreapp2.1; net472; AnyCPU Test.cs: using System; namespace Test { class Program { static void Main() { Console.WriteLine("Hello World!"); #if NETFRAMEWORK Console.WriteLine(".NET Framework"); Console.WriteLine((System.Numerics.Vector)new System.Numerics.Vector(42)); #elif NETCOREAPP Console.WriteLine(".NET Core"); Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(new { a = 1, b = 2 })); #else Console.WriteLine("Unknown"); #endif } } } Gist

Ответ 2



отдельно обновлять код соседнего проекта у Вас две копии кода? Положите cs файлы в третье место и добавьте их в оба проекта, используя опцию "Add As Link" в окне "Add Existing File".

Комментариев нет:

Отправить комментарий