4

我有一个 C# 项目,其中包含 1 个 EXE 和大约 7 个 DLL。我想要的是 EXE 旁边的一个名为“库”(或类似的东西)的文件夹,其中包含所有 DLL,这样它就更有条理,对最终用户来说看起来更好。

我知道这可以使用 AppConfig 来完成,但我不想要 EXE 旁边的另一个文件。我想要的只是主EXE和文件夹。

是否可以使用 AppConfig 并嵌入它或加载 DLL,而无需使用不会改变我当前使用 DLL 的方式的 AppConfig?我知道您可以在运行时加载 DLL,但我认为这不是我想要的。

谢谢!

编辑

我知道这样做的利弊,所以请只回答如何做到这一点,而不是关于我为什么应该或不应该这样做的建议。

4

3 回答 3

1

使用System.Reflection.Assembly.LoadFrom(path).

LoadFrom将允许它在与目标 dll 相同的文件夹中查找任何依赖项。如果您使用Load,那么它不会考虑与您加载的 dll 位于同一文件夹中的 dll。

我知道这并不能直接回答你的问题,但是LoadFrom如果你想要一个“xcopy”可安装的.net 应用程序或其他东西,在你的进程启动早期手动调用 DLL 应该可以解决问题。

于 2012-08-19T21:16:56.323 回答
1

PrettyBin是您的解决方案。它做得很漂亮!

于 2016-03-15T21:49:03.420 回答
0

SetDllDirectory() + 仔细编码的 AssemblyResolve。在一个不平凡的项目中为我工作,没有 DLL 地狱。

https://github.com/TASVideos/BizHawk/blob/d05ddabf5f22debf47369f94868462a75ea0b466/BizHawk.Client.EmuHawk/Program.cs

于 2016-03-15T22:35:08.223 回答