Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当copylocal属性为false时,如何从引用dll获取类型_C#_Visual Studio_Visual Studio 2005_C# 2.0 - Fatal编程技术网

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
,则我相信只会检查当前正在执行的程序集。

谢谢,这不是我正在搜索的,但它是一个很好的解决方案:)