【问题标题】:Looking for a good resource for building a SP 2007 WSP package in Visual Studio 2010寻找在 Visual Studio 2010 中构建 SP 2007 WSP 包的好资源
【发布时间】:2011-06-02 20:47:49
【问题描述】:

我有一个为 sharepoint 2007 构建的事件处理程序功能,并通过将 DLL 移动到 GAC 并在必要的文件夹中创建 Feature.xml 和 Elements.xml 然后使用 stsadm 命令安装它们来进行部署。我希望避免做这一切,而是有一个 WSP 文件,我可以运行它来在生产环境中自动安装该功能。

谢谢

【问题讨论】:

  • 重新阅读您的帖子标题,可能是您对构建 Web 部件本身不感兴趣。如果是这种情况,请明确说明您对 WSP 的要求,我可以提供帮助;我还使用 VS2010 项目将第三方 DLL 封装在 WSP 中以进行部署等。
  • 我已更新帖子以包含更多详细信息。

标签: sharepoint wsp


【解决方案1】:

以下是在 Visual Studio 2010 中将非托管项目转换为托管解决方案包的方法:

  1. 创建一个“空 SharePoint 项目”。

  2. 设置部署目标。Solution Explorer中,单击项目节点并查看Properties窗格。在GlobalAssemblyCacheWebApplication 之间设置Assembly Deployment Target 属性。在这种情况下,我们会将其保留为默认的 GlobalAssemblyCache

    请注意,还有一个方便的属性,称为 Include Assembly In Package。这用于从输出包中排除您的默认项目程序集。你为什么需要这个?如果您的项目不包含代码:例如,您只是捆绑了一些第三方 DLL 进行部署。

  3. 替换您的 SharePoint DLL 引用。按照Adam Macaulay's article 中的步骤删除 v14 DLL 并重新添加 v12 DLL。

  4. 添加一个事件接收器项目。 右键单击​​您的项目并指向添加 > 新项目...,然后选择“事件接收器”。给事件接收者一个合适的名字,然后点击添加

  5. 配置事件接收器。 Visual Studio 将连接到您的 (2010) SharePoint 实例,然后通过向导提示您完成要处理的事件和项目类型。最终结果是您的解决方案中的事件接收器项具有覆盖正确方法的存根类,以及配置适当的Elements.xml 文件。如果您已经拥有这两个文件,则您实际上不需要“如实”完成向导...只需选择第一个选项,单击 Finish 并让 Visual Studio 创建事件接收器和相应的功能。

  6. 添加您的代码逻辑。在解决方案资源管理器中,展开您的事件接收器节点以显示.CS 类和对应的Elements.xml。将现有文件的内容复制到这些位置。

  7. 配置包功能。解决方案资源管理器中,展开“功能”节点并找到默认功能 (Feature1.feature)。这是在您添加事件接收器项目时创建的。为了清楚起见,将该功能重命名为符合逻辑的名称,然后双击它以在设计模式下打开该功能。您应该会看到您的事件接收器已添加到最右侧的窗格(“功能中的项目”)。如果还有其他人,您可以有选择地从功能中添加/删除项目。这里是你在Farm/Site/Web/WebApplication之间设置功能范围的地方。

    同样重要的是,在功能设计器中,请注意 Properties 窗格有大量附加选项可以设置在功能上。这些在其他任何地方都无法访问,因此请牢记在哪里可以找到它们。

    最后,如果您单击设计器底部的 Manifest 选项卡,您可以预览功能清单的外观。如果需要,可以手动编辑清单(有效地禁用设计器),但我还没有找到我需要做的事情,我无法通过属性进行配置。

  8. 配置整体包。解决方案资源管理器中,展开“包”节点并找到默认包 (Package.package)。就像功能一样,双击包以设计模式打开它。这与功能使用的 UI 相同,允许您选择哪些功能将成为此包的一部分。您的事件接收器功能应该已经添加到最右侧的窗格(“包中的项目”)。

    再次,与功能相同,当您处于包设计模式时,属性 窗格将提供某些无法在其他地方编辑的属性。最值得注意的是,您应该在此处清除 SharePoint 产品版本 中的值。

    此外,我们可以通过屏幕底部的 Manifest 选项卡使用相同的清单预览。这对于检查 SafeControl 条目(如果需要它们)等内容非常方便。 Assembly 条目应反映在项目中设置的正确部署目标(在本例中为 GlobalAssemblyCache)。

    最后,Advanced 选项卡允许您为包指定额外的程序集/SafeControl 条目,如果您将额外的 DLL 绑定到默认项目 DLL,这将很有帮助。

  9. 构建您的项目。显然我们希望确保它能够编译!

  10. 测试部署。当我测试时,我首先部署到我的 2010 实例(因为它很方便)并仔细检查所有内容是否已按预期安装:DLL 正确放置 (BIN/GAC)、创建适当的 Web.config 条目、在正确范围内安装功能、正确激活功能等。

  11. 打包解决方案。指向您的 Build > Package 菜单项。 WSP 将放置在活动配置的相应输出文件夹中。测试部署到您的 SharePoint 2007 实例。

【讨论】:

    【解决方案2】:

    查看由 Adam Macaulay 撰写的 "Build a SharePoint 2007 Web Part with a Visual Studio 2010 Visual Web Part Project"。当我想做同样的事情时,我将其用作参考,并且该方法效果很好。我已经成功地将我们的许多 Visual Studio 2008 项目转换为 2010 项目,同时保持与 SharePoint 2007 环境的兼容性。

    我将提出一个建议:如果您的 Web 部件绝对不需要可视化设计器(即您的 Web 部件的输出是通过编程方式生成的),那么使用可视化 Web 部件模板会增加额外的我不喜欢你的解决方案的“垃圾”。

    相反,在步骤 1 中创建一个“空 SharePoint 项目”,然后在解决方案资源管理器中右键单击您的项目并指向 添加 > 新项目... 并选择“Web 部件” "(不是“可视 Web 部件”)。您最终不会使用 ASCX 控件,您可以忽略 Adam 教程中处理更新 Register 声明的部分。

    这还具有额外的好处,即预先捕获 Web 部件文件的正确名称,因此您不必重命名一堆“VisualWebPart1xxx”文件。

    【讨论】:

    • 也许我应该在我的查询中更具体。这是将在 sharepoint 中激活的功能的部署包。它不适用于 Web 部件。感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 2018-02-27
    • 2012-04-07
    • 1970-01-01
    相关资源
    最近更新 更多