SharePoint 2010 WSP部署问题。无法部署新文件。

5
我们发现一个问题,我们在运行Sharepoint 2010发布网站集的生产服务器上部署时遇到了问题。我们将从Visual Studio打包的WSP部署到Sharepoint管理Shell(卸载、重新安装解决方案)。过去它一直像魅力一样工作。我们添加了自定义主页、CSS文件、图像,然后成功添加了自定义页面布局。我也在我的电脑上本地运行SP,通过部署功能添加新文件没有任何问题。我可以将它们整洁地添加到文档库中,甚至可以从Elements文件创建新文件夹。但是当我将WSP部署到生产服务器时,问题就出现了。我想将几个JS文件和一个XSL文件添加到样式库中,但这些文件无法添加到文档库中。尽管部署过程顺利且没有错误,但当我在Sharepoint Hive中检查我的功能时,新文件已经存在于物理驱动器上!然而,它们不会被添加到虚拟文档库中。我可以更新现有的文件,如主页和CSS文件,因此部署的功能是有效的。我的猜测是要么与权限问题有关,要么与我的代码中的某些错误有关。但我做的正是我们以前部署时所做的。下面是我的Elements.xml文件的内容:
<?xml version="1.0" encoding="utf-8"?>  
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">  
  <Module Name="ALayout" Url="_catalogs/masterpage" RootWebOnly="true" >  
    <File Path="ALayout\_a_intra.master" Url="_a_intra.master" Type="GhostableInLibrary" />  
  </Module>  
  <Module Name="ALayoutStyles" Url="Style Library" RootWebOnly="true" >  
    <File Path="ALayout\styles\z_aintra_core.css" Url="z_aintra_core.css" />  
    <File Path="ALayout\styles\aintra_std.css" Url="aintra_std.css" />  
</Module>  
  <Module Name="ALayoutStyleImages" Url="Style Library/img" RootWebOnly="true" >  
    <File Path="ALayout\styles\img\a-logobig.png" Url="a-logobig.png" Type="GhostableInLibrary" />  
    <File Path="ALayout\styles\img\bg.png" Url="bg.png" Type="GhostableInLibrary" />  
    <File Path="ALayout\styles\img\divider.png" Url="divider.png" Type="GhostableInLibrary" />  
    <File Path="ALayout\styles\img\nav-bg-hovered.png" Url="nav-bg-hovered.png" Type="GhostableInLibrary" />  
    <File Path="ALayout\styles\img\nav-bg-radius-left.png" Url="nav-bg-radius-left.png" Type="GhostableInLibrary" />  
    <File Path="ALayout\styles\img\nav-bg-radius-right.png" Url="nav-bg-radius-right.png" Type="GhostableInLibrary" />  
    <File Path="ALayout\styles\img\nav-bg-selected.png" Url="nav-bg-selected.png" Type="GhostableInLibrary" />  
    <File Path="ALayout\styles\img\nav-bg.png" Url="nav-bg.png" Type="GhostableInLibrary" />  
    <File Path="ALayout\styles\img\nav-divider.png" Url="nav-divider.png" Type="GhostableInLibrary" />  
    <File Path="ALayout\styles\img\top_bg.png" Url="top_bg.png" Type="GhostableInLibrary" />  
    <File Path="ALayout\styles\img\user-account-radius-left.png" Url="user-account-radius-left.png" Type="GhostableInLibrary" />  
    <File Path="ALayout\styles\img\user-account-radius-right.png" Url="user-account-radius-right.png" Type="GhostableInLibrary" />  
  </Module>  
  <Module Name="ALayoutScript" Url="Style Library/js" RootWebOnly="true" >  
    <File Path="ALayout\js\script.js" Url="script.js" Type="GhostableInLibrary" />  
    <File Path="ALayout\js\plugins.js" Url="plugins.js" Type="GhostableInLibrary" />  
</Module>  
  <Module Name="ALayoutScriptLibs" Url="Style Library/js/libs" RootWebOnly="true" >  
    <File Path="ALayout\js\libs\jquery-1.4.2.min.js" Url="jquery-1.4.2.min.js" Type="GhostableInLibrary" />  
  </Module>  
</Elements>  

我无法将最后两个Javascript模块部署到文档库中。我尝试了不同的文档库,但它在生产服务器上仍然无法工作,只能在本地运行。而且我无法通过功能将其部署到Sharepoint Hive。

有人能想到我错过了什么吗?


文件夹 js 已经存在吗? - brian brinley
起初我以为那是问题所在,于是我手动添加了一个文件夹。但仍然不行。我也尝试直接部署到样式库。我还尝试了不同的文件夹,例如_catalogs/_masterpage、_layouts等,但都没有成功。而且需要将XSL文件(不在代码中)添加到样式库/XSL样式表/文件夹中,因为我需要它来进行CQWP样式设置,所以将其添加到Sharepoint Hive中并不是解决方案。 - Anandasama
你确定它没有出现任何错误吗?听起来它可能会在到达JS文件之前遇到错误并停止处理。你的XML文件看起来没问题,所以问题肯定出在其他地方:很可能是你的代码或服务器配置有问题。 - Peter Jacoby
在我的虚拟机上,它没有出现任何错误。每个文件都按照应该的方式部署。我不确定如何在生产环境中进行调试。当我在PowerShell中安装(卸载+安装)WSP时,它不会给我任何错误。我在MSDN上发布了我们的PowerShell脚本和日志的镜像帖子。http://social.msdn.microsoft.com/Forums/en/sharepoint2010programming/thread/949ba114-0863-4ccf-bfe6-2eb6b7975315?prof=required - Anandasama
2个回答

5

哇,解决方案很简单。我在Sharepoint管理中停用了该功能,然后重新启用它,新文件就被部署了。

为什么会发生这种情况,我不知道。如果我对功能进行版本控制而不是卸载->添加,可能会得到修复吗? 为什么生产环境和本地环境的行为不同?等等。


谢谢!你是真正的英雄!你拯救了这一天!谢谢。 - robsonrosa

1

我有几个要注意的点,请确认是否已经遵循...

  1. 希望你的 VS solution(ALayout 模块下)中有“js”文件夹。

  2. 将 IgnoreIfAlreadyExists="FALSE" 属性添加到节点中

    FilePath="ALayout\js\libs\jquery-1.4.2.min.js" Url="jquery-1.4.2.min.js" Type="GhostableInLibrary" IgnoreIfAlreadyExists="FALSE"/

  3. 使用 ULSViewer 查看在生产环境部署时是否有任何错误...


谢谢你的建议!
  1. 是的,我的解决方案中有js文件夹。路径是正确的。在我的本地虚拟机上,一切都已部署完成。但是在生产环境中却没有。
  2. IgnoreIfAlreadyExists...我看过一些使用它的例子,但我从未理解它的含义。我会尝试一下。谢谢!
  3. 我检查了ULS查看器,没有在部署时出现任何错误。
- Anandasama

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接