将exe指向可执行文件目录之外的dll

时间:2014-01-08 03:29:17

标签: c# .net windows dll

使用C#,VS2012,Windows Server 2012r2

我做了一些搜索,我想我已经知道了答案,但希望有人能让我知道我是否正确。

我的网站在bin文件夹中有一个dll。我还有几个可按需运行或按计划运行的可执行工具,几乎所有这些工具都使用与wesbite相同的dll。或者更确切地说,他们使用位于每个exe文件夹中的那个dll的副本。

这非常麻烦,因为任何时候我更新网站的dll,所有这些exe现在都使用旧版本的dll。所以我喜欢它,如果我可以将所有exe指向网站bin文件夹并在那里使用dll。

如果可能的话,我不想修改Windows PATH值。如果是这样看起来需要使用一个名为LoadLibrary的函数?我根本不做任何Windows编程,所以我根本不熟悉这个。这是唯一(或最好)的方式吗?

我发现了这篇博文:http://blogs.msdn.com/b/jonathanswift/archive/2006/10/03/dynamically-calling-an-unmanaged-dll-from-.net-_2800_c_23002900_.aspx

我只是创建NativeMethods类,然后为我需要调用的每个方法/函数调用GetProcAddress吗?

我希望有一种方法可以告诉exe用app.config查看dll的特定文件夹。这不可能吗?

由于

1 个答案:

答案 0 :(得分:2)

似乎你的DLL是一个托管DLL(基于.net),因为你说你几乎不做任何Win32 API编程。

一种解决方案是在GAC中安装DLL。然后,每次更新DLL程序集版本并部署到GAC时,都必须重定向应用程序以使用最新的应用程序。 See this