【发布时间】:2011-04-05 08:26:27
【问题描述】:
我将 Web 部件部署为一项功能。激活后从 feature.xml 属性包中读取一个值。假设将来我想更改功能属性包中的值并更新 Web 部件。是否可以在不取消部署整个包的情况下更新 feature.xml 并重新部署 wsp。 我要做的就是更新 feature.xml 并触发 featureactivated 事件,以便更新 Web 部件。
【问题讨论】:
标签: sharepoint moss wss
我将 Web 部件部署为一项功能。激活后从 feature.xml 属性包中读取一个值。假设将来我想更改功能属性包中的值并更新 Web 部件。是否可以在不取消部署整个包的情况下更新 feature.xml 并重新部署 wsp。 我要做的就是更新 feature.xml 并触发 featureactivated 事件,以便更新 Web 部件。
【问题讨论】:
标签: sharepoint moss wss
您不必取消部署 wsp,您可以使用升级功能。例如,在 stsadm -o upgradesolution
【讨论】:
最完整的做法是为您的解决方案编写以下脚本
STSADM --o upgradesolution // 这将更新 feature.xml
STSADM -o execadmsvcjobs // 确保解决方案升级已运行
STSADM -o deactivatefeature // 停用该功能
STSADM -o activatefeature // 重新激活读取新值的功能
STSADM -o execadmsvcjobs // 为不耐烦的人再次运行
Visual Studio 的 WSPBuilder 和 STSDEV 等工具将在此提供帮助。对于 WSPBuilder,该命令位于 Tools > WSPBuilder > Upgrade Solution 中,对于 STSDEV,它是 Upgrade build target 选项。不过不确定 Vsewss 或 SPVisualDev 之类的东西。
【讨论】:
您根本不必重新部署 WSP 包。如果您更改所有前端服务器上的 feature.xml,然后重新激活该功能,它就会成功。
但请注意,这不是一个好方法,因为您下次再次部署 WSP 包时肯定会丢失该修改。或者,当您撤回并再次部署 WSP 包时,您已经删除了之前对 feature.xml 文件所做的手动更改。这是因为 SharePoint 在其解决方案存储中具有 WSP 包的副本。因此,在使用 WSP 包时,获取 WSP 包中的所有修改并重新部署它是一种干净的方法。这也确保将更改应用于所有前端服务器。此外,当一个新的前端服务器应该在稍后阶段添加到场时!
Kr.,伯恩德。
【讨论】: