我有一个包含多个 SharePoint 2010 项目的 Visual Studio 2010/2012 解决方案。在构建或打包事件中,我希望 VS 将输出的 WSP 和 PDB 文件自动复制到我的解决方案根目录下的公共文件夹中,这样我就不必从每个项目的 bin\$(Configuration) 文件夹中手动获取它们。
我在每个项目文件中添加了以下元素:
<Target Name="CopyPackage">
<Exec WorkingDirectory="$(PackagePath)" Command="copy "$(TargetDir)$(TargetName).wsp" "$(SolutionDir)Builds\$(TargetName).wsp"" ContinueOnError="False" />
<Exec WorkingDirectory="$(PackagePath)" Command="copy "$(TargetDir)$(TargetName).pdb" "$(SolutionDir)Builds\$(TargetName).pdb"" ContinueOnError="False" />
</Target>
<PropertyGroup>
<BuildDependsOn>$(BuildDependsOn);CreatePackage;CopyPackage</BuildDependsOn>
</PropertyGroup>
到目前为止一切顺利,效果很好。
每个项目包名称控制输出 WSP 文件的名称,并且可以不同于输出程序集 DLL 文件的名称。
Visual Studio SharePoint 项目包名称 http://imageshack.us/a/img842/322/vsspprojectpackagename.png
在此示例中,WSP 将命名为 Acme.Edms.SP.ContentTypes.WSP。
碰巧我希望我的 WSP 使用与项目和程序集稍有不同的名称。但是,如果我更改包名称,它会破坏使用映射到程序集名称的 $(TargetName) 的 CopyPackage 目标。
(SharePoint) 包名称是否有 MSBuild 宏,以便我可以修复项目文件中的上述 MSBuild 元素?
更一般地说,MSBuild 是否有一组特定于 SharePoint 项目和项类型的宏?
相当于构建命令和属性的宏。
谢谢