2015-07-30 5 views
0

Je viens de passer les dernières 4 heures ou essayer de comprendre pourquoi lors de la compilation d'un fichier package déployé SharePoint (fichier WSP) qui ont été spécifiés par les jokers ne sont pas toujours s'inclus dans le paquet. Le "toujours" s'est avéré être "jamais sur une construction propre" et "habituellement, autrement". En réalité, les fichiers pointés par la spécification générique n'existait pas au moment où le projet chargé (ils sont mis là font partie de la construction), ce qui se sont avérés être le nœud du problème - il semble que la expansion générique se produit uniquement lorsque Visual Studio ou MSBuild (il arrive dans les deux) charge le fichier csproj. Si aucun fichier n'est présent à ce moment-là, tous les fichiers placés dans la construction seront pris en compte pour l'inclusion du paquet de fichiers. En fin de compte, j'ai pu résoudre partiellement le problème en faisant placer les fichiers requis par la construction d'un projet secondaire (dont dépend le projet principal), mais même cela ne fonctionne pas correctement dans VS. le temps que vous chargez la solution. Essentiellement, vous devez construire la solution une fois, puis la fermer et la rouvrir puis la recréer pour tous les fichiers à inclure. MSBuild semble fonctionner différemment et développer uniquement les caractères génériques lorsqu'il commence à créer le projet spécifique.L'utilisation des caractères génériques dans csproj pour inclure des dossiers entiers dans package SharePoint WSP

je suppose que ce que je voudrais savoir est s'il y a une meilleure façon de le faire - par exemple est-il possible d'utiliser une inclusion générique dans les fichiers .spdata, ou existe-t-il un autre moyen de spécifier des répertoires entiers à inclure dans les fichiers .wsp (avec la possibilité de spécifier le nom du répertoire de destination)?

Répondre

0

Si je vous ai bien compris, vos problèmes viennent de l'évaluation des éléments des fichiers dans le msbuild.

si u spécifier un dans l'emballage ciblez un nouveau ItemGroup il ne sera évalué une fois entré dans la cible, par exemple:

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