.net dll依赖关系检查
我有一个小型 winforms 应用程序,它使用大约 20 个外部 dll。 在应用程序初始化时,如何检查它们是否存在? 说:“你没有某些 dll,请正确安装它”。
i have small winforms application, which uses about 20 external dlls.
how can i check for all their existance, while application initializing?
to say:"u dont have some dll, install it corrctly".
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您必须循环遍历应用程序中使用的所有自定义类型(使用反射),并尝试创建每个类型的实例。当然是在 try/catch 中。然后捕获 FileNotFoundException 并通知用户是否缺少某些库。
当您创建应用程序中使用的类型实例时,AppDomain 会加载所需的库(因此如果找不到文件,它将抛出异常)。
我认为这会有帮助。
You have to loop through all custom types (using reflections) used in your application and try to create an instance of each of them. Of course in try/catch. Then have a catch on FileNotFoundException and inform the user there if some libs are missing.
When you create instance of types used in your application AppDomain loads needed libs (so it will throw exception if file is not found).
I think that will help.
如果缺少所需的程序集之一,则 CLR 甚至可能无法加载您的应用程序。因此,您可以编写一个加载应用程序,该应用程序将检查所需程序集是否存在,以及它们是否存在
Process.Start
主应用程序。If one of the required assemblies are missing your application might not even be loaded by the CLR. So you could write a loader application which will do the job of checking the existence of the required assemblies and if they exist
Process.Start
the main application.如果您使用插件式架构,那么您可以稍后解决所有依赖项(甚至按需解决),并且您可以控制无法解决依赖项时会发生的情况。
它不需要太复杂——例如,请参阅这种简单的方法。
If you use a plugin-style architecture then you can resolve all your dependencies late -- on demand even -- and you can take control of what happens if a dependency can't be resolved.
It doesn't need to be complicated -- see for example this simple approach.