Sharepoint 在另一个程序集中创建Web部件子类时出错

Sharepoint 在另一个程序集中创建Web部件子类时出错,sharepoint,web-parts,Sharepoint,Web Parts,我正在尝试创建WebPart的子类,该子类将充当我们创建的任何WebPart的父类。如果我在同一个项目中创建一个空类,我就能够像人们所期望的那样从中继承。但是,如果我尝试将其放置在另一个程序集中(我已经能够从中引用和使用类的程序集中),则会出现以下错误: 无法加载一个或多个请求的类型。有关详细信息,请检索LoaderExceptions属性 其他可能相关的信息(我通常不是SharePoint开发人员):我编译DLL,从开发项目中引用它们,并将它们复制到SharePoint实例的/bin目录中。所

我正在尝试创建WebPart的子类,该子类将充当我们创建的任何WebPart的父类。如果我在同一个项目中创建一个空类,我就能够像人们所期望的那样从中继承。但是,如果我尝试将其放置在另一个程序集中(我已经能够从中引用和使用类的程序集中),则会出现以下错误:

无法加载一个或多个请求的类型。有关详细信息,请检索LoaderExceptions属性

其他可能相关的信息(我通常不是SharePoint开发人员):我编译DLL,从开发项目中引用它们,并将它们复制到SharePoint实例的/bin目录中。所有程序集都已签名。我正在尝试使用VS2008的“部署”功能进行部署


不幸的是,这似乎不是SharePoint特有的错误,我也不确定如何解决这个问题。有人经历过这种情况吗?你有什么建议吗?

好的,我发现了问题。打包任务出于某种原因使用反射。当它发现您的类继承自另一个域中的类时,它会尝试使用反射加载它。然而,反射不执行绑定策略,所以该域不会被加载

打包程序的作者可以通过添加以下代码来解决此问题:

AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += new ResolveEventHandler(CurrentDomain_ReflectionOnlyAssemblyResolve);
Assembly a = System.Reflection.Assembly.ReflectionOnlyLoadFrom(filename);

static Assembly CurrentDomain_ReflectionOnlyAssemblyResolve(object sender, ResolveEventArgs args)
{
    return System.Reflection.Assembly.ReflectionOnlyLoad(args.Name);
}

但是,如果您的项目需要解决方案,只需将程序集添加到GAC,GAC就可以解决它们。

好的,我发现了问题。打包任务出于某种原因使用反射。当它发现您的类继承自另一个域中的类时,它会尝试使用反射加载它。然而,反射不执行绑定策略,所以该域不会被加载

打包程序的作者可以通过添加以下代码来解决此问题:

AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += new ResolveEventHandler(CurrentDomain_ReflectionOnlyAssemblyResolve);
Assembly a = System.Reflection.Assembly.ReflectionOnlyLoadFrom(filename);

static Assembly CurrentDomain_ReflectionOnlyAssemblyResolve(object sender, ResolveEventArgs args)
{
    return System.Reflection.Assembly.ReflectionOnlyLoad(args.Name);
}
但是,如果您的项目需要解决方案,只需将程序集添加到GAC中,GAC就可以解决这些问题