如何将.exe加载为.NET程序集?

时间:2011-04-26 22:25:27

标签: c# .net reflection .net-assembly

我可以使用?:

Assembly.LoadFile

不确定这是否可以这样做?

但是当我尝试这种方法时,它会抛出Could not load file or assembly "CustomControlLib"或其中一个依赖项。系统找不到指定的文件。

有什么想法吗?

4 个答案:

答案 0 :(得分:8)

您需要确保依赖项也已加载到应用程序域中。如果未自动找到它们,您可以订阅AppDomain.AssemblyResolve,以便在需要时手动查找和加载程序集。

例如:

private Assembly AssemblyEventHandler(object sender, ResolveEventArgs args)
{
    return locatedAssembly;
}

另外,我会考虑使用Assembly.LoadFrom,特别是after reading this,其中有nobugz的强烈断言和somereading的链接(所有过时但仍应该是在大多数情况下都可以承受。)

答案 1 :(得分:3)

是的,您可以像加载Dll一样加载.Net exe。您获得的错误是由您的exe的依赖性引起的。确保可以找到这些依赖项,即在汇编搜索路径中。

答案 2 :(得分:3)

如果使用Assembly.LoadFrom()依赖项将从程序集所在的目录中加载。

Assembly.LoadFile()忽略同一文件夹中的所有其他DLL和exe文件。

答案 3 :(得分:0)

是的,您可以使用Assembly.LoadFile()。检查你的路径。