Чтобы использовать приложения без библиотек ( которые лежат рядом с вашим приложением ) сделаем следующее: * В проекте ( студии ) создаём папку, даём название любое ( пример: Library ) * Компилируем приложение, из папки \bin\Release - все библиотеки закидываем в папку Library ( перетаскиваем в студии ) * В самой студии: Проект - Свойства - Ресурсы - Добавить ресурс - Добавить сущ.. файл: * Выбираем все файлы из папки Library. * Компилируем! Код для работы приложения без библиотек: namespace NetLibTools { using System; using System.Collections.Generic; using System.Reflection; using System.Resources; using Properties; public static class ResLib { private static readonly HashSet<string> resolvedAssemblies = new HashSet<string>(); public static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) { if (!resolvedAssemblies.Contains(args.Name)) { Console.WriteLine($"AssemblyResolve: {args?.Name}"); resolvedAssemblies.Add(args.Name); string assemblyName = new AssemblyName(args?.Name)?.Name; ResourceManager rm = Resources.ResourceManager; byte[] asmBytes = (byte[])rm?.GetObject(assemblyName); Console.WriteLine($"Resource {assemblyName}, found: {asmBytes != null}"); if (asmBytes != null) { return Assembly.Load(asmBytes); } } return null; } } } Код namespace NetLibTools { using System; using System.Collections.Generic; using System.Reflection; using System.Resources; using Properties; public static class ResLib { private static readonly HashSet<string> resolvedAssemblies = new HashSet<string>(); public static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) { if (!resolvedAssemblies.Contains(args.Name)) { Console.WriteLine($"AssemblyResolve: {args?.Name}"); resolvedAssemblies.Add(args.Name); string assemblyName = new AssemblyName(args?.Name)?.Name; ResourceManager rm = Resources.ResourceManager; byte[] asmBytes = (byte[])rm?.GetObject(assemblyName); Console.WriteLine($"Resource {assemblyName}, found: {asmBytes != null}"); if (asmBytes != null) { return Assembly.Load(asmBytes); } } return null; } } } Ещё можно так ( : public static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) { if (!resolvedAssemblies.Contains(args.Name)) { Console.WriteLine($"AssemblyResolve: {args?.Name}"); resolvedAssemblies.Add(args.Name); string resourceName = string.Empty; var missingAssembly = new AssemblyName(args.Name); if (missingAssembly.Name.Contains("-") || missingAssembly.Name.EndsWith(".dll")) { Console.WriteLine($"Resource name: {resourceName} | {missingAssembly.Name}"); CultureInfo ci = missingAssembly.CultureInfo; resourceName = $"{missingAssembly.Name.Replace('.', '_')}_{ci.Name.Replace('-', '_')}"; } if (!missingAssembly.Name.Contains("-") || missingAssembly.Name.EndsWith(".dll")) { Console.WriteLine($"Resource name: {resourceName} | {missingAssembly.Name}"); resourceName = $"{missingAssembly.Name.Replace('.', '_')}"; } ResourceManager rm = Resources.ResourceManager; byte[] asmBytes = (byte[])rm?.GetObject(resourceName); Console.WriteLine($"Resource {resourceName}, found: {asmBytes != null}"); if (asmBytes != null) { return Assembly.Load(asmBytes); } } return null; } Код public static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) { if (!resolvedAssemblies.Contains(args.Name)) { Console.WriteLine($"AssemblyResolve: {args?.Name}"); resolvedAssemblies.Add(args.Name); string resourceName = string.Empty; var missingAssembly = new AssemblyName(args.Name); if (missingAssembly.Name.Contains("-") || missingAssembly.Name.EndsWith(".dll")) { Console.WriteLine($"Resource name: {resourceName} | {missingAssembly.Name}"); CultureInfo ci = missingAssembly.CultureInfo; resourceName = $"{missingAssembly.Name.Replace('.', '_')}_{ci.Name.Replace('-', '_')}"; } if (!missingAssembly.Name.Contains("-") || missingAssembly.Name.EndsWith(".dll")) { Console.WriteLine($"Resource name: {resourceName} | {missingAssembly.Name}"); resourceName = $"{missingAssembly.Name.Replace('.', '_')}"; } ResourceManager rm = Resources.ResourceManager; byte[] asmBytes = (byte[])rm?.GetObject(resourceName); Console.WriteLine($"Resource {resourceName}, found: {asmBytes != null}"); if (asmBytes != null) { return Assembly.Load(asmBytes); } } return null; } Использовать так: namespace NetLibTools { using System; internal static class Program { [STAThread] public static void Main() { // Подгружаем библиотеки.. AppDomain.CurrentDomain.AssemblyResolve += ResLib.CurrentDomain_AssemblyResolve; Console.Title = "NetLibTools by r3xq1"; // Тут я для примера взял библиотеку dnlib.dll и кинул её в ресы. ModuleEditor.Inizialize("1", "2"); Console.Read(); // Для выгрузки библиотек. AppDomain.CurrentDomain.AssemblyResolve -= ResLib.CurrentDomain_AssemblyResolve; } } } Код namespace NetLibTools { using System; internal static class Program { [STAThread] public static void Main() { // Подгружаем библиотеки.. AppDomain.CurrentDomain.AssemblyResolve += ResLib.CurrentDomain_AssemblyResolve; Console.Title = "NetLibTools by r3xq1"; // Тут я для примера взял библиотеку dnlib.dll и кинул её в ресы. ModuleEditor.Inizialize("1", "2"); Console.Read(); // Для выгрузки библиотек. AppDomain.CurrentDomain.AssemblyResolve -= ResLib.CurrentDomain_AssemblyResolve; } } } Компилируем всё! Удаляем все библиотеки ( рядом с приложением) они уже не нужны и проверяем ( размер конечного файла увеличится в разы, в зависимости от размера библиотек! )