我只是花了最后 4 个小时左右试图弄清楚为什么在编译通过通配符指定的 SharePoint 部署包(wsp 文件)时文件并不总是包含在包中。事实证明,“总是”是“从不进行干净的构建”和“通常,否则”。实际上,通配符规范所指向的文件在项目加载时并不存在(它们被放置在构建的一部分中),结果证明这是问题的症结所在 - 似乎通配符扩展仅在 Visual Studio 或 MSBuild(两者都发生)加载 csproj 文件时发生。如果此时没有文件存在,那么作为构建的一部分放置在那里的任何文件都将被考虑包含在文件包中。
最后,我能够通过构建辅助项目(主要项目依赖于该项目)将所需文件放置在那里来部分解决该问题,但即使这在您第一次加载时也无法在 VS 中正常工作解决方案。本质上,您必须构建一次解决方案,然后关闭并重新打开,然后再次构建以包含所有文件。MSBuild 的工作方式似乎有所不同,仅在首次开始构建特定项目时才扩展通配符。
我想我想知道是否有更好的方法来执行此操作-例如,是否可以在 .spdata 文件中使用通配符包含,或者是否有其他方法可以指定要包含在 .wsp 文件中的整个目录(能够指定目标目录名称)?