C# can';t加载类型为(UserType)的程序集。AssemblyQualifiedName
我在程序集C# can';t加载类型为(UserType)的程序集。AssemblyQualifiedName,c#,assemblies,C#,Assemblies,我在程序集MyUserType.dll中创建了一个类Address。我想在控制台应用程序中加载它。我尝试了下面的代码,但失败了: //cfg.AddAssembly(typeof(Address).AssemblyQualifiedName); 但当我尝试使用其他加载程序集方法时,它成功了 cfg.AddAssembly(Assembly.GetAssembly(typeof(Address))); cfg.AddAssembly("MyUserType"); 失败的消息是: Messag
MyUserType.dll
中创建了一个类Address
。我想在控制台应用程序中加载它。我尝试了下面的代码,但失败了:
//cfg.AddAssembly(typeof(Address).AssemblyQualifiedName);
但当我尝试使用其他加载程序集方法时,它成功了
cfg.AddAssembly(Assembly.GetAssembly(typeof(Address)));
cfg.AddAssembly("MyUserType");
失败的消息是:
Message=“无法加载文件或程序集”Ordering.Data.Address,Ordering.Data,Version=1.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。给定的程序集名称或代码基无效。(HRESULT中的异常:0x80131047)
为什么?类
Ordering.Data.Address
引用的程序集与库MyUserType.dll
不在同一目录中。确保所有引用的程序集都位于System32文件夹、GAC或与库相同的目录中。类Ordering.Data.Address
引用的程序集与库不在同一目录中,MyUserType.dll
。确保所有引用的程序集都位于System32文件夹、GAC或与库相同的目录中。Type.AssemblyQualifiedName返回类型的限定名,因为它返回与包含程序集的全名连接的类型的全名。您似乎正在将其传递到Assembly.Load或类似程序中,因此它显然会失败,因为这不是有效的程序集名称
要使用AssemblyQualifiedName,您需要将其传递给静态方法之类的方法,该方法将正确解析它。Type.AssemblyQualifiedName返回类型的限定名,就像它返回类型的全名与包含程序集的全名连接一样。您似乎正在将其传递到Assembly.Load或类似程序中,因此它显然会失败,因为这不是有效的程序集名称
要使用AssemblyQualifiedName,您需要将其传递给静态方法之类的方法,以便正确解析它。第一个方法使用字符串作为参数,第二个方法使用程序集作为参数。很难猜测AddAssembly()的重载是什么样子的。第一个重载使用字符串作为参数,第二个重载使用程序集作为参数。很难猜测AddAssembly()的重载可能是什么样子。