SharePoint 2010:从生产数据设置本地开发环境 - 由于无效的PublicKeyToken而无法加载文件或程序集

时间:2013-02-20 23:52:00

标签: sharepoint sharepoint-2010 gac strongname

我尝试了多种方法将生产SharePoint内容提供给在Windows Windows Server 2008 R2上运行的新安装的本地开发环境。在导出服务器场并恢复失败后,我遇到了这篇博文,并按照这些说明进行了操作:http://richardstk.wordpress.com/2012/02/03/build-a-sharepoint-2010-development-test-environment/。总而言之,它基本上是备份实时SQL内容数据库以及配置文件,同步和社交数据库,然后在开发计算机上恢复它们​​并指向SharePoint使用这些新数据库而不是旧数据库。然后,我将自定义Web部件从Visual Studio中部署到开发服务器。

我已经做到了这一点,它看起来效果很好。我可以访问中央管理员以及在Visual Studio中设置SharePoint连接,并能够查看所有页面,列表,文档等。因此它肯定指向新的内容数据库。我应该提一下,我也可以通过SharePoint Designer连接并访问所有正确的内容,母版页,列表等。

我遇到的问题是,当我在浏览器中访问该网站时,我收到“无法加载文件或程序集”错误,它将我带到/Pages/Home.aspx。该文件是我在Visual Studio中部署的自定义Web部件。当我在GAC中查看时,我看到列出的程序集,但PublicKeyToken与错误消息中显示的不同。

当我深入研究它时,我发现自定义用户控件已在我的母版页中注册,当我查看位于_controltemplates目录中的ascx文件时,会出现如下所示的程序集:

<%@ Assembly Name="BlogRoll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=529e9730fe2a198d" %>

当我在那里查看GAC时,PublicKeyToken对于实际站点是正确的,但当我将其部署到我的本地GAC时,它创建了一个新的PblicKeyToken。对不起,如果我在散步,但我不确定什么是相关的,什么不是。

我想我的问题是如何处理这个问题?在本地更改所有ascx文件以匹配我在本地GAC中使用的新PublicKeyToken似乎并不聪明,因为当我将这些更改部署到实时时,它们将找不到合适的程序集。处理这个问题的最佳方法是什么?

更新

有问题的代码有一个key.snk文件,用于对其进行强签名。我的理解是,这应该使它每次都使用特定的PublicKeyToken进行编译,因此使用特定的PublicKeyToken安装在GAC中。如果这是真的,那么我相信它在开发环境中与生产环境有不同密钥令牌的唯一原因是提供的key.snk文件不正确。这是真的吗?

1 个答案:

答案 0 :(得分:0)

您可以使用WSP Builder或WinGac将具有正确PublicKeyToken的程序集强制部署到您的本地GAC。