更改AssemblyVersion后,Webpart"未注册为安全"

Ole*_*ers 3 sharepoint web-parts sharepoint-2010

我(成功)部署了一些sharepoint2010 - 使用msbuild的Webparts.一切正常,直到我决定改变assemblyVersion.每当我这样做的消息

Web部件错误:无法显示或导入此页面上的Web部件或Web窗体控件.无法找到类型RTContacts,RTContacts,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 2721ba85ef1e4b88或未将其注册为安全.

一个解决方案是保持1.0.0.0,但应该有更好的方法......

也许有趣的是我们使用集中的AssemblyFile作为链接.

清单包含正确的assemblyversion:

<Assemblies>
<Assembly Location="RTContacts.dll" DeploymentTarget="GlobalAssemblyCache">
  <SafeControls>
    <SafeControl Assembly="RTContacts, Version=1.0.4325.18399, Culture=neutral, PublicKeyToken=2721ba85ef1e4b88" Namespace="RTContacts" TypeName="*" />
  </SafeControls>
</Assembly>
Run Code Online (Sandbox Code Playgroud)

当我再次将WebPart添加到该站点时,它会正确显示,但现有的webParts似乎链接到旧版本.

Rya*_*yan 5

您遇到这些问题是因为您错误地使用了版本控制属性.

例如,如果检查Reflector中的Microsoft.SharePoint.dll,您将看到v14.0.0.0(适用于SharePoint 2010).

这个AssemblyVersion对于Beta,RCx,RTM所有服务包和CU等都将保持完全相同 - 唯一改变的是AssemblyFileVersion(这是你在Windows资源管理器中看到的属性)

有关详细信息,请参阅此

SharePoint功能:如何使用通配符程序集版本控制?

但是不要相信我的话 - Microsoft KB556041 - 如何使用汇编版本和汇编文件版本

如果您遵循此操作,则不需要任何程序集绑定重定向,当您更新Web部件时,现有实例不会被破坏.