Работа в папке отладки, но в другом месте

Это мое App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <probing privatePath="lib" />
      </assemblyBinding>
    </runtime>
</configuration>

Мои библиотеки DLL, на которые есть ссылки, не копируются в локальную систему, и я скопировал библиотеки DLL в папку lib в папке отладки, и она работает хорошо, но когда я перемещаю свою программу вместе с папкой библиотеки, она не работает.

Есть ли способ, которым я мог бы заставить его работать, когда каталог программы и библиотеки в другую папку?

1 ответ

Немного опоздал к этому, но есть альтернатива, добавьте это в ваш метод Main

AppDomain.CurrentDomain.AssemblyResolve += CurrentDomainAssemblyResolve;

Создание метода

    private static Assembly CurrentDomainAssemblyResolve(object sender, ResolveEventArgs args)
    {
        AssemblyName assyName = new AssemblyName(args.Name);
        string filename = args.Name.ToLower().Split(',')[0];
        string path = "c:\some path or other\"
        string assembly = System.IO.Path.Combine(path, filename);

        if (!assembly.EndsWith(".dll"))
            assembly += ".dll";

        try
        {
            if (System.IO.File.Exists(assembly))
                return (Assembly.LoadFrom(assembly));
        }
        catch (Exception error)
        {
            // do whatever
        }

        return (null);
    }
Другие вопросы по тегам