2013-05-04 3 views
3

J'ai une solution Visual Studio 2010/2012 avec plusieurs projets SharePoint 2010. Lors de la génération ou de l'événement de package, je veux que VS copie automatiquement les fichiers WSP et PDB de sortie dans un dossier commun à la racine de ma solution afin de ne pas les récupérer manuellement dans le dossier bin \ $ (Configuration) de chaque projet.Existe-t-il une macro MSBuild pour le nom de package du type de projet SharePoint?

J'ai ajouté les éléments suivants à chaque dossier de projet:

<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> 

Jusqu'à présent, si bon, qui fonctionne bien.

Chaque nom de package de projet contrôle le nom du fichier WSP de sortie et peut être différent du nom du fichier DLL de l'assembly de sortie.

Visual Studio SharePoint Project Package Name http://imageshack.us/a/img842/322/vsspprojectpackagename.png

Dans cet exemple, le WSP sera nommé Acme.Edms.SP.ContentTypes.WSP.

Il se trouve que je veux que mon WSP utilise un nom différent du projet et de l'assemblage. Mais si je change le nom du paquet, il casse la cible CopyPackage qui utilise $ (TargetName) qui correspond au nom de l'assembly.

Existe-t-il une macro MSBuild pour le nom de package (SharePoint) afin que je puisse corriger les éléments MSBuild ci-dessus dans mes fichiers de projet?

Plus généralement, MSBuild at-il un ensemble de macros spécifiques au projet SharePoint et aux types d'éléments? Un nombre équivalent à Macros for Build Commands and Properties

Merci

Répondre

0

Voici la liste des SharePoint specific MSBuild properties et il n'y a rien sur le nom du package. Vous devez donc utiliser une solution de contournement pour cela.

D'abord, vous recevez des listes de fichiers de package et les fichiers pdb comme ça:

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

Et puis vous pouvez l'utiliser dans la commande régulière de copie. Je n'ai pas testé mais cela devrait fonctionner.

Questions connexes