3

我有一个包含多个 SharePoint 2010 项目的 Visual Studio 2010/2012 解决方案。在构建或打包事件中,我希望 VS 将输出的 WSP 和 PDB 文件自动复制到我的解决方案根目录下的公共文件夹中,这样我就不必从每个项目的 bin\$(Configuration) 文件夹中手动获取它们。

我在每个项目文件中添加了以下元素:

<Target Name="CopyPackage">
  <Exec WorkingDirectory="$(PackagePath)" Command="copy &quot;$(TargetDir)$(TargetName).wsp&quot; &quot;$(SolutionDir)Builds\$(TargetName).wsp&quot;" ContinueOnError="False" />
  <Exec WorkingDirectory="$(PackagePath)" Command="copy &quot;$(TargetDir)$(TargetName).pdb&quot; &quot;$(SolutionDir)Builds\$(TargetName).pdb&quot;" 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 项目和项类型的宏?

相当于构建命令和属性的宏

谢谢

4

1 回答 1

0

这是SharePoint 特定 MSBuild 属性的列表,没有关于包名称的信息。所以你必须为此使用解决方法,例如

首先,您会得到包文件和 pdb 文件的列表,如下所示:

<ItemGroup>
    <PackageFiles Include="$(BasePackagePath)\*.$(PackageExtension)" />
    <PdbFiles Include="$(BasePackagePath)\*.pdb)" />
</ItemGroup>

然后您可以在常规复制命令中使用它。

我没有测试它,但它应该可以工作。

于 2013-08-17T21:57:20.557 回答