Пакет MSBUILD для веб-развертывания не содержит справочные библиотеки проекта. - PullRequest
5 голосов
/ 11 августа 2011

Когда я пытаюсь создать пакет для веб-развертывания с использованием msbuild, он включает только проекты dll.Zip-файл пакета или временный каталог не включают в себя библиотеки DLL указанного проекта.

Я просмотрел это сообщение , и это не моя проблема.Я определенно использую код из ссылочных проектов в своем основном проекте, для которого я создаю пакет развертывания.

Я использую MSBUILD 4 для создания пакета.

Когда я создаюпакет, использующий VS2010, использующий точно такой же файл проекта, работает нормально.У всех упомянутых проектов есть свои dll, включенные в файл package.zip.

Я попытался изменить расположение _PackageTempDir, и это также не решило проблему.взяв свойство ExcludeFilesFromDeployment и установив для параметра PackageAsSingleFile значение false, чтобы посмотреть, не изменит ли это результаты.

Вот моя цель для Package.Все регулярные выражения таковы, что я могу извлечь имя файла моего проекта из конца пути поиска, а затем использовать это имя для имени выходной папки и имени файла zip.PackageOutputDir - это свойство, которое я импортирую.

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

Есть какие-либо идеи относительно того, почему оно не включает в себя указанные мной библиотеки проекта?

1 Ответ

4 голосов
/ 19 августа 2011

Вы можете сделать следующее в вашем 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>

Когда вы вызываете msbuild, вам нужно добавить свойство, которое будет использоваться в $ (PackageProjectName), выполнив следующее:

msbuild.exe / свойство: PackageProjectName = $ project

...