C# 当copylocal属性为false时,如何从引用dll获取类型
我需要做一些类似的事情:C# 当copylocal属性为false时,如何从引用dll获取类型,c#,visual-studio,visual-studio-2005,c#-2.0,C#,Visual Studio,Visual Studio 2005,C# 2.0,我需要做一些类似的事情: Type CustomType = Type.GetType("instanceName"); 它总是返回null。instanceName是一个字符串,表示添加到引用的dll中包含的类型(copyLocal属性设置为false) 我还尝试: Type CustomType = Type.GetType("instanceName, dllFile.dll"); 但也返回null 非常感谢 Alex如果程序集已加载,则可以尝试以下操作: Type customTyp
Type CustomType = Type.GetType("instanceName");
它总是返回null。instanceName是一个字符串,表示添加到引用的dll中包含的类型(copyLocal属性设置为false)
我还尝试:
Type CustomType = Type.GetType("instanceName, dllFile.dll");
但也返回null
非常感谢
Alex如果程序集已加载,则可以尝试以下操作:
Type customType = Type.GetType("namespace.typename, assembly");
如果您没有将程序集部署到GAC,并且
CopyLocal
设置设置为false
,那么您计划从何处加载程序集
如果计划将程序集部署到驱动器上的固定位置,可以使用Assembly.LoadFrom
:
var assembly = Assembly.LoadFrom(@"C:\Path\To\Assembly.dll");
var type = assembly.GetType("InstanceName");
这允许您加载绝对程序集。如果您使用的是Type.GetType
,它将使用标准的fusion程序集加载规则尝试查找匹配的程序集(但如果它不是GAC'd或CopyLocal
=true
),那么它将不会与您的输出一起部署,并且GetType
将返回null
此外,如果您没有在类型名称中指定程序集名称,例如
instanceName,assemblyName
,而不是instanceName
,则我相信只会检查当前正在执行的程序集。谢谢,这不是我正在搜索的,但它是一个很好的解决方案:)