3

我在 sharepoint 中创建了一个自定义母版页,其中包含很多图像(比如 200 个)。如何打包所有要预配到网站集样式库的文件?我知道这样做的唯一方法是通过一个功能,但这意味着将每个文件(全部 200 个)列为一个<file></file>元素。有没有更简单的方法?属性 IncludeFolders="??-??" in<module></module>似乎什么也没做。

如果所有图像文件都在我的功能文件夹内的一个文件夹中(例如...\template\features\myFeature\images),有没有办法将整个文件夹配置到样式库?

谢谢。

4

2 回答 2

4

此 module.xml 文件位于名为“Images”的文件夹中。所有图片也在这个文件夹中(使用Visual Studio 2008 v1.3的sharepoint开发工具)。wsp 包需要知道正在添加的所有文件,因此您必须添加每个文件。(将 .wsp 重命名为 .cab 并打开它。然后您可以看到解决方案中的所有文件)

 <Elements Id="8f8113ef-75fa-41ef-a0a2-125d74fc29b7" xmlns="http://schemas.microsoft.com/sharepoint/">
  <Module Name="Images" Url="Style Library/Images/myfolder" RootWebOnly="TRUE">
    <File Path="hvi_logo.bmp" Url="hvi_logo.bmp" Type="GhostableInLibrary" />
    <File Path="hvi_logo_small.bmp" Url="hvi_logo_small.bmp" Type="GhostableInLibrary" />
    <File Path="epj-logo.png" Url="epj-logo.png" Type="GhostableInLibrary" />
  </Module>
</Elements>

您可以编写一个小型 C# 应用程序来为您创建 xml 文件,如下所示:

 var info = new DirectoryInfo(@"c:\pathToImageFolder");
        var files = info.GetFiles();

        TextWriter writer = new StreamWriter(@"c:\pathToImageFolder\module.xml");

        writer.WriteLine("<Elements Id=...");
        foreach (FileInfo file in files)
        {
            writer.WriteLine(string.Format("<File Path='{0}' Url='{0}' Type='GhostableInLibrary' />",file.Name));
        }
        writer.WriteLine("</Elements>");
        writer.Flush();
        writer.Close();
于 2009-08-12T21:10:17.460 回答
1

这是一个适用于我的快速 Powershell 函数:

function Enum-FilesInPath
{
    param([string]$path)

    Get-ChildItem -path $path | foreach-object {
        # if a directory, recurse...
        if ($_.PSIsContainer)
        {
            $recursivePath = [string]::Format("{0}\{1}", $path, $_.Name)
            Enum-FilesInPath $recursivePath
        }
        # else if a file, print out the xml for it
        else
        {
            $finalPath = [string]::Format("{0}\{1}", $path, $_.Name)
            $url = $finalPath.Replace("\", "/") # backslashes for path, forward slashes for urls
            [string]::Format("`t<File Url=`"$url`" Path=`"$fullPath`" Type=`"GhostableInLibrary`" />")
        }
    }
}
于 2010-09-15T14:17:29.847 回答