У меня тут два вопроса к знатокам возникло))) 1. Предположим, есть win11.exe, в папке с ним лежит 99 .dll зависимостей. Есть ли аккуратный способ слить всё воедино? 2. Нормально ли в C# прописывать using RootLib.Example; а потом using RootLib.Example.Something; ? Заранее благодарен за ответы, с меня
если это длл не с Nuget, то Costura.Fody в помощь(загугли). Если своя длл/с нугета то воспользуйся ILMerge
Насчёт второго - сталкивался с таким, например при прописанном using System.Collections приходилось дописывать using System.Collections.Generic, так что это нормально
1) используй классы 2) смотри, мы подключаем System.Windows.Forms И к примеру используем Clipboard.Set("123"); Код Clipboard.Set("123"); , а можно написать полностью System.Windows.Forms.Clipboard.Set("123"); Код System.Windows.Forms.Clipboard.Set("123"); . То есть, это нормально, если тебе влом прописывать одно и тоже, однако это не всегда правильный вариант. Почему? К примеру приведу такую тему: Мы имеем 2 либы и уже их подключили. Содержимое первого класса: *** public static void Test(string x) { MessageBox.Show(x); } Код *** public static void Test(string x) { MessageBox.Show(x); } Содержимое 2-й либы: *** public static void Test(string x) { Console.WriteLine(x); } Код *** public static void Test(string x) { Console.WriteLine(x); } И что ты в этом случае будешь делать, ммм? Ах да, основа кода: *** Test("Hello world!"); Код *** Test("Hello world!"); Прошу прощения за ошибки, время поздно да пишу с телефона.
В шарпе такой случай относится к перегрузке методов. Кто не в курсе - это когда два метода по-разному работают, или принимают разные данные, но, самое главное, имеют одинаковые названия. В таком случае, если ты пишешь в VS, студия просто попросит тебя уточнить, к какому классу или библиотеке относится вызываемый тобой метод, вот и всё, а иначе возникнут ошибки компиляции
Пишу как сделал у себя. 1)Устанавливаешь ILMerge с сайта Microsoft 2)Открываешь т.к. здесь( https://imgur.com/a/z95OecJ ) открыто и вставляешь к себе это "$(SolutionDir)merge_all.bat" "$(SolutionDir)" "$(TargetPath)" "$(ConfigurationName)" 3)Создаёшь файл с именем merge_all.bat в первой папке проект(самая главная) и вписываешь вот это https://pastebin.com/tkiaY2r7 В папке вывода будет папка Output и в ней один *.exe P.S. не помню где нашёл этот способ, но его пришлось переписать из-за ошибок