Bagikan melalui


Pemecahan Masalah Proses Pengemasan

oleh Jason Lee

Topik ini menjelaskan bagaimana Anda dapat mengumpulkan informasi terperinci tentang proses pengemasan dengan menggunakan properti EnablePackageProcessLoggingAndAssert di Microsoft Build Engine (MSBuild).

Saat Anda mengatur properti EnablePackageProcessLoggingAndAssert ke true, MSBuild akan:

  • Tambahkan informasi tambahan tentang proses pengemasan ke log build.
  • Kesalahan log dalam kondisi tertentu, misalnya, jika file duplikat ditemukan dalam daftar kemasan.
  • Buat direktori Log di folder ProjectName_Package dan gunakan untuk merekam informasi tentang file yang Anda kemas.

Jika proses pengemasan gagal, atau paket penyebaran web Anda tidak berisi file yang Anda harapkan, Anda dapat menggunakan informasi ini untuk memecahkan masalah proses dan menentukan di mana hal-hal yang salah.

Catatan

Properti EnablePackageProcessLoggingAndAssert hanya berfungsi jika Anda membuat proyek menggunakan konfigurasi Debug . Properti diabaikan dalam konfigurasi lain.

Topik ini merupakan bagian dari serangkaian tutorial yang didasarkan pada persyaratan penyebaran perusahaan dari perusahaan fiktif bernama Fabrikam, Inc. Seri tutorial ini menggunakan solusi sampel— solusi Contact Manager—untuk mewakili aplikasi web dengan tingkat kompleksitas yang realistis, termasuk aplikasi MVC 3 ASP.NET, layanan Windows Communication Foundation (WCF), dan proyek database.

Metode penyebaran di jantung tutorial ini didasarkan pada pendekatan file proyek terpisah yang dijelaskan dalam Memahami File Proyek, di mana proses build dikendalikan oleh dua file proyek—satu berisi instruksi build yang berlaku untuk setiap lingkungan tujuan, dan satu berisi pengaturan build dan penyebaran khusus lingkungan. Pada waktu build, file proyek khusus lingkungan digabungkan ke dalam file proyek agnostik lingkungan untuk membentuk serangkaian instruksi build lengkap.

Memahami Properti EnablePackageProcessLoggingAndAssert

Membangun dan Mengemas Proyek Aplikasi Web menjelaskan bagaimana Web Publishing Pipeline (WPP) menyediakan serangkaian target MSBuild yang memperluas fungsionalitas MSBuild dan memungkinkannya untuk berintegrasi dengan Alat Penyebaran Web (Web Deploy) Internet Information Services (IIS). Saat Anda mengemas proyek aplikasi web, Anda memanggil target WPP.

Banyak dari target WPP ini termasuk logika bersyar yang mencatat informasi tambahan ketika properti EnablePackageProcessLoggingAndAssert diatur ke true. Misalnya, jika Anda meninjau target Paket , Anda dapat melihat bahwa itu membuat direktori log tambahan dan menulis daftar file ke file teks jika EnablePackageProcessLoggingAndAssert sama dengan true.

<Target Name="Package"
        Condition="$(_CreatePackage)"
        DependsOnTargets="$(PackageDependsOn)">

    <!--Log the information  Set $(EnablePackageProcessLoggingAndAssert) to True        
                 if you want to see this information-->
    <MakeDir Condition="$(EnablePackageProcessLoggingAndAssert) And 
                        !Exists('$(PackageLogDir)')"
             Directories="$(PackageLogDir)" />
    <WriteLinesToFile Condition="$(EnablePackageProcessLoggingAndAssert)"
                      Encoding="utf-8"
                      File="$(PackageLogDir)\Prepackage.txt"
                      Lines="@(FilesForPackagingFromProject->'
                             From:%(Identity) 
                             DestinationRelativePath:%(DestinationRelativePath) 
                             Exclude:%(Exclude) 
                             FromTarget:%(FromTarget) 
                             Category:%(Category)
                             ProjectFileType:%(ProjectFileType)')" 
                      Overwrite="True" />

Catatan

Target WPP ditentukan dalam file Microsoft.Web.Publishing.targets di folder %PROGRAMFILES(x86)%\MSBuild\Microsoft\VisualStudio\v10.0\Web. Anda dapat membuka file ini dan meninjau target di Visual Studio 2010 atau editor XML apa pun. Berhati-hatilah untuk tidak mengubah isi file.

Mengaktifkan Pengelogan Tambahan

Anda dapat menyediakan nilai untuk properti EnablePackageProcessLoggingAndAssert dengan berbagai cara, tergantung pada cara Anda membangun proyek Anda.

Jika Anda membangun proyek dari baris perintah, Anda dapat menyediakan nilai untuk properti EnablePackageProcessLoggingAndAssert sebagai argumen baris perintah:

MSBuild.exe /t:Build
            /p:Configuration=DEBUG
            /p:DeployOnBuild=true
            /p:DeployTarget=Package
            /p:EnablePackageProcessLoggingAndAssert=true
            [Your project].csproj

Jika Anda menggunakan file proyek kustom untuk membangun proyek, Anda dapat menyertakan nilai EnablePackageProcessLoggingAndAssert di atribut Properti tugas MSBuild :

<Target Name="BuildProjects" Condition=" '$(BuildingInTeamBuild)'!='true' ">
   <MSBuild Projects="@(ProjectsToBuild)"
            Properties="OutDir=$(OutputRoot);
                        Configuration=$(Configuration);
                        DeployOnBuild=true;
                        DeployTarget=Package;
                        EnablePackageProcessLoggingAndAssert=true"
            Targets="Build" />
  </Target>

Jika Anda menggunakan definisi build Team Foundation Server (TFS) untuk membangun proyek Anda, Anda dapat menyediakan nilai untuk properti EnablePackageProcessLoggingAndAssert di baris Argumen MSBuild :Jika Anda menggunakan definisi build Team Foundation Server (T F S) untuk membangun proyek Anda, Anda dapat menyediakan nilai untuk properti EnablePackageProcessLoggingAndAssert di Argumen MSBuild.

Catatan

Untuk informasi selengkapnya tentang membuat dan mengonfigurasi definisi build, lihat Membuat Definisi Build yang Mendukung Penyebaran.

Atau, jika Anda ingin menyertakan paket di setiap build, Anda dapat memodifikasi file proyek untuk proyek aplikasi web Anda untuk mengatur properti EnablePackageProcessLoggingAndAssert ke true. Anda harus menambahkan properti ke elemen PropertyGroup pertama dalam file .csproj atau .vbproj Anda.

<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="...">
  <PropertyGroup>
    <EnablePackageProcessLoggingAndAssert 
       Condition=" '$(EnablePackageProcessLoggingAndAssert)' == '' ">
         true
    </EnablePackageProcessLoggingAndAssert>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>

Meninjau File Log

Saat Anda membuat dan mengemas proyek aplikasi web dengan EnablePackageProcessLoggingAndAssert diatur ke true, MSBuild membuat folder tambahan bernama Log di folder ProjectName_Package. Folder Log berisi berbagai file:

MSBuild membuat folder tambahan bernama Log di folder ProjectName_Package.

Daftar file yang Anda lihat akan bervariasi sesuai dengan hal-hal dalam proyek dan proses build Anda. Namun, file-file ini biasanya digunakan untuk merekam daftar file yang dikumpulkan WPP untuk pengemasan, pada berbagai tahap proses:

  • File PreExcludePipelineCollectFilesPhaseFileList.txt mencantumkan file yang dikumpulkan MSBuild untuk pengemasan sebelum file apa pun yang ditentukan untuk pengecualian dihapus.

  • File AfterExcludeFilesFilesList.txt berisi daftar file yang dimodifikasi setelah file apa pun yang ditentukan untuk pengecualian dihapus.

    Catatan

    Untuk informasi selengkapnya tentang mengecualikan file dan folder dari proses pengemasan, lihat Mengecualikan File dan Folder dari Penyebaran.

  • File AfterTransformWebConfig.txt mencantumkan file yang dikumpulkan untuk pengemasan setelah transformasi Web.config dilakukan. Dalam daftar ini, setiap file transformasiWeb.config khusus konfigurasi, seperti Web.Debug.config dan Web.Release.config, dikecualikan dari daftar file untuk pengemasan. Satu Web.config yang diubah disertakan di tempat mereka.

  • File PostAutoParameterizationWebConfigConnectionStrings.txt berisi daftar file setelah string koneksi dalam file Web.config telah diparameterkan. Ini adalah proses yang memungkinkan Anda mengganti string koneksi dengan pengaturan yang tepat untuk lingkungan target Saat Anda menyebarkan paket.

  • File Prepackage.txt berisi daftar pra-build file yang diselesaikan untuk disertakan dalam paket.

Catatan

Nama file log tambahan biasanya sesuai dengan target WPP. Anda dapat meninjau target ini dengan memeriksa file Microsoft.Web.Publishing.targets di folder %PROGRAMFILES(x86)%\MSBuild\Microsoft\VisualStudio\v10.0\Web.

Jika konten paket web Anda tidak seperti yang Anda harapkan, meninjau file-file ini bisa menjadi cara yang berguna untuk mengidentifikasi pada titik mana dalam proses terjadi kesalahan.

Kesimpulan

Topik ini menjelaskan bagaimana Anda dapat menggunakan properti EnablePackageProcessLoggingAndAssert di MSBuild untuk memecahkan masalah proses pengemasan. Ini menjelaskan berbagai cara di mana Anda dapat menyediakan nilai properti ke proses build, dan menjelaskan informasi tambahan yang direkam saat Anda mengatur properti ke true.

Bacaan lebih lanjut

Untuk informasi selengkapnya tentang menggunakan file proyek MSBuild kustom untuk mengontrol proses penyebaran, lihat Memahami File Proyek dan Memahami Proses Build. Untuk informasi selengkapnya tentang WPP dan cara mengelola proses pengemasan, lihat Membangun dan Mengemas Proyek Aplikasi Web. Untuk panduan tentang cara mengecualikan file dan folder tertentu dari paket penyebaran web, lihat Mengecualikan File dan Folder dari Penyebaran.