#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: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 Latest Exe netcoreapp2.1; net472; AnyCPU )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".
Комментариев нет:
Отправить комментарий