【问题标题】:Using wildcards in csproj to include whole folders in SharePoint wsp package在 csproj 中使用通配符将整个文件夹包含在 SharePoint wsp 包中
【发布时间】:2015-10-21 05:11:08
【问题描述】:

我只花了最后 4 个小时左右的时间试图弄清楚为什么在编译通过通配符指定的 SharePoint 部署包(wsp 文件)时文件并不总是包含在包中。事实证明,“总是”是“从不进行干净构建”和“通常,否则”。实际上,通配符规范所指向的文件在项目加载时并不存在(它们被放置在构建的一部分中),结果证明这是问题的症结所在- 通配符扩展似乎仅在 Visual Studio 或 MSBuild(两者都发生)加载 csproj 文件时发生。如果此时没有文件,则作为构建的一部分放置在那里的任何文件都将被考虑包含在文件包中。

最后,通过构建辅助项目(主要项目依赖于该项目)将所需文件放置在那里,我能够部分解决该问题,但即使这在第一次在 VS 中也无法正常工作你曾经加载过解决方案。本质上,您必须构建一次解决方案,然后关闭并重新打开,然后再次构建以包含所有文件。 MSBuild 的工作方式似乎有所不同,仅在首次开始构建特定项目时才扩展通配符。

我想我想知道是否有更好的方法来做到这一点 - 例如是否可以在 .spdata 文件中使用通配符包含,或者是否有其他方法可以指定要包含在 .wsp 文件中的整个目录(能够指定目标目录名称)?

【问题讨论】:

    标签: visual-studio-2012 sharepoint msbuild csproj wsp


    【解决方案1】:

    如果我对您的理解正确,您的问题来自对 msbuild 中文件项的评估。

    如果你在包装目标中指定一个新的项目组,它只会在进入目标后被评估,例如:

        <Target Name="ConfigurationChanges" AfterTargets="Build">
            <ItemGroup>
                <ConfigFiles Include="$(DeliveryFolder)\**\*.spdata"/>
            </ItemGroup>
        </Target>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-09
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      • 2021-05-19
      相关资源
      最近更新 更多