5 votes

Le paquet de déploiement web MSBUILD ne comprend pas les DLL de référence du projet.

Lorsque j'essaie de créer un paquet pour le déploiement web en utilisant msbuild, il inclut seulement la dll du projet. Le fichier zip du paquet ou le répertoire temporaire n'inclut pas les dll du projet référencé.

J'ai regardé ce poste et ce n'est pas mon problème. J'utilise bien le code des projets référencés dans mon projet principal pour lequel je crée le paquet de déploiement.

J'utilise MSBUILD 4 pour créer le paquet.

Lorsque je crée le paquet en utilisant VS2010 en utilisant exactement le même fichier de projet, cela fonctionne bien. Tous les projets référencés ont leurs dlls incluses dans le fichier package.zip.

J'ai essayé de changer l'emplacement du _PackageTempDir et cela n'a pas résolu le problème non plus.

J'ai essayé de supprimer la propriété ExcludeFilesFromDeployment et de définir le paramètre PackageAsSingleFile sur false pour voir si cela changeait les résultats.

Voici mon objectif pour le paquet. L'expression rationnelle me permet d'extraire le nom du fichier de mon projet à la fin d'un chemin de recherche et d'utiliser ce nom pour le nom du dossier de sortie et le nom du fichier zip. Le PackageOutputDir est une propriété que j'importe.

  <Target Name="Package">
    <MSBuild Projects="@(PackageProject)" Targets="Package" Properties="Platform=$(Platform);
                                                                           Configuration=$(Configuration);
                                                                           DeployOnBuild=true;
                                                                           DeployTarget=Package;
                                       PackageLocation=$(PackageOutputDir)\$([System.Text.RegularExpressions.Regex]::Split($(ProjectName), '(.*\\)([a-z,A-Z,0-9,_,-]+)(\.\*proj;)')[2])\$([System.Text.RegularExpressions.Regex]::Split($(ProjectName), '(.*\\)([a-z,A-Z,0-9,_,-]+)(\.\*proj;)')[2]).zip;
                                       PackageAsSingleFile=true;
                                       ExcludeFilesFromDeployment=Web.config;
                                       _PackageTempDir=$(PackageOutputDir)\temp;">
    </MSBuild>
  </Target>

Une idée sur la raison pour laquelle il n'inclut pas les dlls de mon projet référencé ?

5voto

0decimal0 Points 103

Vous pourriez faire ce qui suit dans votre MasterBuild.proj.

  <Target Name="Package">
    <ConvertToAbsolutePath Paths="$(PackageOutputDir)">
      <Output TaskParameter="AbsolutePaths" PropertyName="Source_Dir_Abs"/>
    </ConvertToAbsolutePath>
   <MSBuild Projects="@(PackageProject)" Targets="Package"
      properties="Platform=$(Platform);
      Configuration=$(Configuration);
      DeployOnBuild=false;
      DeployTarget=Package;
      PackageLocation=$(Source_Dir_Abs)\$(PackageProjectName).zip;
      PackageAsSingleFile=true;
      ExcludeFilesFromDeployment=Web.config;
      _PackageTempDir=$(PackageOutputDir)\temp;">
  </MSBuild>
  </Target>

Lorsque vous appelez msbuild, vous devez ajouter une propriété qui sera utilisée dans $(PackageProjectName) en faisant ce qui suit :

msbuild.exe /property:PackageProjectName=$projet

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X