MSBUILD veb-joylashtirish paketi loyiha ma'lumotnomasi DLL-larini o'z ichiga olmaydi

Msbuild yordamida veb-joylashtirish uchun paket yaratishga harakat qilsam, u faqat dll loyihalarini o'z ichiga oladi. Paket zip fayli yoki vaqtinchalik katalog havola qilingan loyihaning DLL fayllarini o'z ichiga olmaydi.

Men ushbu postni va bu mening muammom emas. Men, albatta, tarqatish paketini yaratayotgan asosiy loyihamdagi havola qilingan loyihalar kodidan foydalanaman.

Men paketni yaratish uchun MSBUILD 4 dan foydalanmoqdaman.

Men VS2010 yordamida paketni aynan bir xil loyiha fayli yordamida yaratganimda, u yaxshi ishlaydi. Barcha havola qilingan loyihalarda dll fayllari package.zip fayliga kiritilgan.

Men _PackageTempDir manzilini o'zgartirishga harakat qildim va bu ham muammoni hal qilmadi.

Men ExcludeFilesFromDeployment xususiyatini olib tashlashga harakat qildim va natijalarni o'zgartirishi yoki yo'qligini bilish uchun PackageAsSingleFile sozlamasini "false" ga o'rnatdim.

Mana mening Paket uchun maqsadim. Barcha regexlar shuning uchun men loyiha fayl nomini qidirish yo'lining oxiridan tortib olaman va keyin bu nomni chiqish papkasi nomi va zip fayl nomi uchun ishlataman. PackageOutputDir men import qilayotgan xususiyatdir.

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

Nima uchun u mening havola qilingan loyiha DLL fayllarini o'z ichiga olmaydi, degan fikr bormi?


person Ben Anderson    schedule 11.08.2011    source manba


Javoblar (1)


Siz MasterBuild.proj da quyidagilarni qilishingiz mumkin.

  <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-ga qo'ng'iroq qilayotgan joyda siz quyidagi amallarni bajarish orqali $(PackageProjectName) da ishlatiladigan xususiyatni qo'shishingiz kerak bo'ladi:

msbuild.exe /property:PackageProjectName=$loyiha

person Mark    schedule 19.08.2011
comment
Men nima uchun DeployOnBuild=true ning obj jildiga ko‘chirilmasligiga olib kelishini bilishni istardim. - person Andrew Myhre; 08.03.2012