当copylocal属性为false时如何从引用dll中获取类型
Posted
技术标签:
【中文标题】当copylocal属性为false时如何从引用dll中获取类型【英文标题】:How to getType from a reference dll when copylocal property is false 【发布时间】:2012-06-27 07:16:49 【问题描述】:我需要做一些类似的东西:
Type CustomType = Type.GetType("instanceName");
它总是返回空值。 instanceName 是一个字符串,它表示添加到 References 的 dll 中包含的类型(将 copyLocal 属性设置为 false)。
我也试过了:
Type CustomType = Type.GetType("instanceName, dllFile.dll");
但也返回 null。
非常感谢
亚历克斯
【问题讨论】:
【参考方案1】:如果程序集已经加载,你可以试试这个:
Type customType = Type.GetType("namespace.typename, assembly");
【讨论】:
【参考方案2】:如果您没有将程序集部署到 GAC 并且 CopyLocal
设置设置为 false
,那么您打算从哪里加载程序集?
如果您计划将程序集部署到驱动器上的固定位置,您可以使用Assembly.LoadFrom
:
var assembly = Assembly.LoadFrom(@"C:\Path\To\Assembly.dll");
var type = assembly.GetType("InstanceName");
这允许您加载绝对程序集。如果您使用Type.GetType
,它使用标准的融合程序集加载规则来尝试找到匹配的程序集(但如果它不是GAC'd 或CopyLocal
= true
),那么它将不会被部署您的输出,GetType
将返回 null。
此外,如果您未在类型名称中指定程序集名称,例如instanceName, assemblyName
,而不是 instanceName
,我相信只检查当前正在执行的程序集。
【讨论】:
谢谢,这不是我正在搜索的,但它是一个很好的解决方案:)以上是关于当copylocal属性为false时如何从引用dll中获取类型的主要内容,如果未能解决你的问题,请参考以下文章
从命令行启动应用程序时,如何将 Spring Boot 应用程序 jar 中的文件作为 -D 属性值引用?
当属性值来自引用表时,应该如何填充实体(bean)对象属性?