可我只是用?:如何将.exe作为.NET程序集加载?
Assembly.LoadFile
不知道这是要做到这一点的呢?
但是当我尝试这种方法,它抛出一个Could not load file or assembly "CustomControlLib"
或它的一个依赖。该系统找不到指定的文件。
任何想法?
可我只是用?:如何将.exe作为.NET程序集加载?
Assembly.LoadFile
不知道这是要做到这一点的呢?
但是当我尝试这种方法,它抛出一个Could not load file or assembly "CustomControlLib"
或它的一个依赖。该系统找不到指定的文件。
任何想法?
您需要确保依赖项也被加载到应用程序域中。如果它们不是自动定位的,则可以订阅AppDomain.AssemblyResolve
以便在需要时手动查找和加载程序集。
例如:
private Assembly AssemblyEventHandler(object sender, ResolveEventArgs args)
{
return locatedAssembly;
}
而且,我会考虑使用Assembly.LoadFrom
,特别after reading this具有由nobugz和链接一个强大的断言some好reading(所有过时,但应该还是可以承受大部分。)
感谢当我现在使用LoadFrom时,我得到一个类似的错误,但与此'试图加载一个格式不正确的程序。' – 2011-04-26 23:16:08
@Joan Venge:你在什么平台上? x86或x64?这个组件的目标是什么样的? – 2011-04-26 23:21:09
我在Win7 x64上。大会说这是x86,所以你是对的,可能是问题。但是,我应该将其更改为任何cpu或x64? – 2011-04-26 23:45:29
是的,你可以使用Assembly.LoadFile()
。检查你的路径。
并检查以确保任何依赖项都在执行路径中。 – 2011-04-26 22:29:27
是的,你可以加载一个.net的exe同样的方式,你会加载DLL。你得到的错误是由你的EXE的依赖引起的。确保可以找到这些依赖关系,即在您的程序集搜索路径中。
他们是但我使用第三方控制,当我打开它的源代码管理时,它使用了其他dll,这些dll在我的解决方案中不存在,但是这些应该不是自动处理的吗?因为程序集已经构建并添加为我的解决方案的参考。 – 2011-04-26 22:46:42
如果使用Assembly.LoadFrom()
依赖会从那里组装所在的目录加载。
Assembly.LoadFile()
被忽略所有其他DLL和EXE文件在同一文件夹。
什么是业务问题域?不是,我该如何解决这个问题,我想解决这个问题,但是你想要做什么的动机是什么? – 2011-04-26 22:28:50
我想将独立应用程序加载到另一个应用程序中,该应用程序将充当主应用程序的子应用程序。我可以使用dll来做到这一点,但这使事情变得复杂,例如不得不从独立的WPF应用程序切换到独立的控制库,这是很多工作,并且不容易来回移动。 – 2011-04-26 22:44:48