7

我认为这可能是一个通用的 .NET 程序集加载问题,但在我的特定情况下,我希望我的 SharePoint 功能指向一个程序集,其版本控制与正确的 SVN 修订号相关联。

我的程序集现在按本文所述进行了版本控制。我希望能够将我的 SharePoint 功能配置为使用 GAC 中最新版本的程序集。

<Feature Id="7b5d86e8-17dc-4943-8f4e-ad1068daf4f9" 
         Title="My happy feature" 
         Scope="Web" 
         Version="1.0.0.0" 
         Hidden="FALSE" 
         DefaultResourceFile="core" 
         ReceiverAssembly="HappyFeature, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d772fbab82fe6896"
         ReceiverClass="HappyFeature.Receivers.HappyItemEventReceiver"
         xmlns="http://schemas.microsoft.com/sharepoint/">
</Feature>

当我这样做时,SharePoint 当然找不到程序集,因为强名称与此处描述的 1.0.0.0 版本不匹配。我的程序集中的当前版本是 1.0.4479.26553,所以我希望我的功能能够自动找到类似编号的程序集版本。我怎样才能做到这一点?

我有点天真地尝试了这样的事情:

ReceiverAssembly="HappyFeature, Version=1.0.*, Culture=neutral, PublicKeyToken=d772fbab82fe6896"

ReceiverAssembly="HappyFeature, Version=1.0.*.*, Culture=neutral, PublicKeyToken=d772fbab82fe6896"

但是当我尝试这样部署我的解决方案时,它似乎仍在寻找 1.0.0.0 版本的文件:

无法安装功能“7b5d86e8-17dc-4943-8f4e-ad1068daf4f9”,因为加载事件接收器程序集“HappyFeature,版本=1.0 ...... 文化=中性,PublicKeyToken=d772fbab82fe6896”失败:System.IO.FileNotFoundException:无法加载文件或程序集 'HappyFeature, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d772fbab82fe6896' 或其依赖项之一。该系统找不到指定的文件。文件名:'HappyFeature,版本=1.0.0.0,文化=中性,PublicKeyToken=d772fbab82fe6896'

强制框架加载我的增量版本功能程序集的正确方法是什么?


编辑:所以,虽然我实际上并没有解决我提出的具体问题,但 Ryan 的建议解决了我的实际问题,即能够使用 SVN 相关信息标记我的程序集,同时保留在 SharePoint 中成功加载我的程序集的能力FeatureReceiver 世界。

4

2 回答 2

8

您可以做的是保持 AssemblyVersion 相同(至少在它是“兼容的主要版本”时),但使用相同的技术将 SVN 修订号放入 AssemblyFileVersion 属性中。

这样您就不必不断更新发布者策略文件。

KB556041 - 如何使用程序集版本和程序集文件版本

假设您正在为您的项目构建一个框架程序集,许多开发人员在构建应用程序程序集时使用该程序集。如果您非常频繁地发布新版本的程序集......并且如果程序集是强命名的,那么开发人员每次发布新程序集时都必须更改引用......在这种封闭组和易变场景中,更好的选择是修复“程序集版本”并仅更改“程序集文件版本”。

SO - AssemblyVersion 和 AssemblyFileVersion 有什么区别

于 2009-06-23T21:41:22.557 回答
1

您可以使用发布者策略重定向到新版本。

于 2009-06-23T21:18:00.687 回答