Providing path to externals assembly native dll dependecy

I have C# application which loads set of managed assemblies. One of this assemblies loads two native dlls (each of them in different location) if they are avaiable. Iam trying to find way to provide search path to those native dlls.

Are there other options? I really dont want to provide those dlls with my software - copying them to programs directory of course solves the problem.

I've tried using SetDllDirectory system function but it is possible to provide only one path using it. Each call to this function resets path.

Setting PATH enviroment variable does not solve the problem too :/


这可以帮助:

    private void Form1_Load(object sender, EventArgs e)
    {
        //The AssemblyResolve event is called when the common language runtime tries to bind to the assembly and fails.
        AppDomain currentDomain = AppDomain.CurrentDomain;
        currentDomain.AssemblyResolve += new ResolveEventHandler(currentDomain_AssemblyResolve);
    }

    //This handler is called only when the common language runtime tries to bind to the assembly and fails.
    Assembly currentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
    {
        string dllPath = Path.Combine(YourPath, new AssemblyName(args.Name).Name) + ".dll";
        return (File.Exists(dllPath))
            ? Assembly.Load(dllPath)
            : null;
    }

Register yours dlls to GAC. More here.

链接地址: http://www.djcxy.com/p/44486.html

上一篇: 运行时获取DLL路径

下一篇: 提供外部装配本地dll依赖的路径