Bagikan melalui


Mengecualikan File dan Folder dari Penyebaran

oleh Jason Lee

Topik ini menjelaskan bagaimana Anda dapat mengecualikan file dan folder dari paket penyebaran web saat Anda membangun dan mengemas proyek aplikasi web.

Topik ini merupakan bagian dari serangkaian tutorial berdasarkan 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 ASP.NET MVC 3, 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.

Gambaran Umum

Saat Anda membangun proyek aplikasi web di Visual Studio 2010, Web Publishing Pipeline (WPP) memungkinkan Anda memperluas proses build ini dengan mengemas aplikasi web yang dikompilasi ke dalam paket web yang dapat disebarkan. Anda kemudian dapat menggunakan Alat Penyebaran Web (Web Deploy) Internet Information Services (IIS) untuk menyebarkan paket web ini ke server web IIS jarak jauh, atau mengimpor paket web secara manual melalui IIS Manager. Proses pengemasan ini dijelaskan dalam Membangun dan Mengemas Proyek Aplikasi Web.

Jadi bagaimana Anda mengontrol apa yang disertakan dalam paket web Anda? Pengaturan proyek di Visual Studio, melalui file proyek yang mendasarinya, memberikan kontrol yang memadai untuk banyak skenario. Namun, dalam beberapa kasus Anda mungkin ingin menyesuaikan konten paket web Anda dengan lingkungan tujuan tertentu. Misalnya, Anda mungkin ingin menyertakan folder untuk file log saat menyebarkan aplikasi ke lingkungan pengujian tetapi mengecualikan folder saat Anda menyebarkan aplikasi ke lingkungan penahapan atau produksi. Topik ini akan menunjukkan kepada Anda cara melakukan ini.

Apa yang Disertakan secara Default?

Saat Anda mengonfigurasi properti proyek aplikasi web di Visual Studio, daftar Item yang akan disebarkan di halaman Web Paket/Terbitkan memungkinkan Anda menentukan apa yang ingin Anda sertakan dalam paket penyebaran web Anda. Secara default, ini diatur ke Hanya file yang diperlukan untuk menjalankan aplikasi ini.

Secara default, ini diatur ke Hanya file yang diperlukan untuk menjalankan aplikasi ini.

Ketika Anda memilih Hanya file yang diperlukan untuk menjalankan aplikasi ini, WPP akan mencoba menentukan file mana yang harus ditambahkan ke paket web. Ini termasuk:

  • Semua output build untuk proyek.
  • File apa pun yang ditandai dengan tindakan build Konten.

Catatan

Logika yang menentukan file mana yang akan disertakan terkandung dalam file ini:
%PROGRAMFILES%\MSBuild\Microsoft\VisualStudio\v10.0\Web\ Microsoft.Web.Publishing.OnlyFilesToRunTheApp.targets

Mengecualikan File dan Folder Tertentu

Dalam beberapa kasus, Anda akan menginginkan kontrol yang lebih halus atas file dan folder mana yang disebarkan. Jika Anda mengetahui file mana yang ingin Anda kecualikan sebelumnya, dan pengecualian berlaku untuk semua lingkungan tujuan, Anda cukup mengatur Tindakan Build dari setiap file ke Tidak Ada.

Untuk mengecualikan file tertentu dari penyebaran

  1. Di jendela Penjelajah Solusi , klik kanan file, lalu klik Properti.
  2. Di jendela Properti , di baris Tindakan Build , pilih Tidak Ada.

Namun, pendekatan ini tidak selalu nyaman. Misalnya, Anda mungkin ingin memvariasikan file dan folder mana yang disertakan sesuai dengan lingkungan tujuan Anda, dan dari luar Visual Studio. Misalnya, dalam solusi sampel Contact Manager, lihat konten proyek ContactManager.Mvc:

Konten proyek ContactManager.Mvc.

  • Folder Internal berisi beberapa skrip SQL yang digunakan pengembang untuk membuat, menghilangkan, dan mengisi database lokal untuk tujuan pengembangan. Tidak ada dalam folder ini yang harus disebarkan ke lingkungan penahapan atau produksi.
  • Folder Skrip berisi beberapa file JavaScript. Banyak file ini disertakan murni untuk mendukung penelusuran kesalahan atau menyediakan IntelliSense di Visual Studio. Beberapa file ini tidak boleh disebarkan ke lingkungan penahapan atau produksi. Namun, Anda mungkin ingin menyebarkannya ke lingkungan pengujian pengembang untuk memfasilitasi pemecahan masalah.

Meskipun Anda dapat memanipulasi file proyek Anda untuk mengecualikan file dan folder tertentu, ada cara yang lebih mudah. WPP mencakup mekanisme untuk mengecualikan file dan folder dengan membangun daftar item bernama ExcludeFromPackageFolders dan ExcludeFromPackageFiles. Anda dapat memperluas mekanisme ini dengan menambahkan item Anda sendiri ke daftar ini. Untuk melakukan ini, Anda perlu menyelesaikan langkah-langkah tingkat tinggi ini:

  1. Buat file proyek kustom bernama [nama proyek].wpp.targets di folder yang sama dengan file proyek Anda.

    Catatan

    File .wpp.targets perlu masuk ke folder yang sama dengan file proyek aplikasi web Anda—misalnya, ContactManager.Mvc.csproj—daripada di folder yang sama dengan file proyek kustom apa pun yang Anda gunakan untuk mengontrol proses build dan penyebaran.

  2. Dalam file .wpp.targets , tambahkan elemen ItemGroup .

  3. Dalam elemen ItemGroup , tambahkan item ExcludeFromPackageFolders dan ExcludeFromPackageFiles untuk mengecualikan file dan folder tertentu sesuai kebutuhan.

Ini adalah struktur dasar file .wpp.targets ini:

<Project ToolsVersion="4.0" 
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>   
    <ExcludeFromPackageFolders Include="[semi-colon-separated folder list]">
      <FromTarget>[arbitrary metadata value]</FromTarget>
    </ExcludeFromPackageFolders>
    <ExcludeFromPackageFiles Include="[semi-colon-separated file list]">
      <FromTarget>[arbitrary metadata value]</FromTarget>
    </ExcludeFromPackageFiles>
  </ItemGroup>
</Project>

Perhatikan bahwa setiap item menyertakan elemen metadata item bernama FromTarget. Ini adalah nilai opsional yang tidak memengaruhi proses build; ini hanya berfungsi untuk menunjukkan mengapa file atau folder tertentu dihilangkan jika seseorang meninjau log build.

Mengecualikan File dan Folder dari Paket Web

Prosedur berikutnya menunjukkan kepada Anda cara menambahkan file .wpp.targets ke proyek aplikasi web dan cara menggunakan file untuk mengecualikan file dan folder tertentu dari paket web saat Anda membangun proyek Anda.

Untuk mengecualikan file dan folder dari paket penyebaran web

  1. Buka solusi Anda di Visual Studio 2010.

  2. Di jendela Penjelajah Solusi , klik kanan simpul proyek aplikasi web Anda (misalnya, ContactManager.Mvc), arahkan ke Tambahkan, lalu klik Item Baru.

  3. Dalam kotak dialog Tambahkan Item Baru , pilih templat File XML .

  4. Dalam kotak Nama , ketik [nama proyek].wpp.targets (misalnya, ContactManager.Mvc.wpp.targets), lalu klik Tambahkan.

    Dalam kotak Nama, ketik nama proyek.wpp.targets, lalu klik Tambahkan.

    Catatan

    Jika Anda menambahkan item baru ke simpul akar proyek, file dibuat di folder yang sama dengan file proyek. Anda dapat memverifikasi ini dengan membuka folder di Windows Explorer.

  5. Dalam file , tambahkan elemen Project dan elemen ItemGroup :

    <Project ToolsVersion="4.0" 
             xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <ItemGroup>    
      </ItemGroup>
    </Project>
    
  6. Jika Anda ingin mengecualikan folder dari paket web, tambahkan elemen ExcludeFromPackageFolders ke elemen ItemGroup :

    1. Di atribut Sertakan , berikan daftar folder yang dipisahkan titik koma yang ingin Anda kecualikan.

    2. Dalam elemen metadata FromTarget , berikan nilai yang bermakna untuk menunjukkan mengapa folder dikecualikan, seperti nama file .wpp.targets .

      <ExcludeFromPackageFolders Include="Internal">
        <FromTarget>ContactManager.Mvc.wpp.targets</FromTarget>
      </ExcludeFromPackageFolders>
      
  7. Jika Anda ingin mengecualikan file dari paket web, tambahkan elemen ExcludeFromPackageFiles ke elemen ItemGroup :

    1. Di atribut Sertakan , berikan daftar file yang dipisahkan titik koma yang ingin Anda kecualikan.

    2. Dalam elemen metadata FromTarget , berikan nilai yang bermakna untuk menunjukkan mengapa file dikecualikan, seperti nama file .wpp.targets .

      <ExcludeFromPackageFiles Include="Scripts\jquery-1.4.4-vsdoc.js;Scripts\jquery-1.4.4.js;Scripts\jquery-ui.js;Scripts\jquery.unobtrusive-ajax.js;Scripts\jquery.validate-vsdoc.js;Scripts\jquery.validate.js;Scripts\jquery.validate.unobtrusive.js;Scripts\MicrosoftAjax.debug.js;Scripts\MicrosoftMvcValidation.debug.js">
        <FromTarget>ContactManager.Mvc.wpp.targets</FromTarget>
      </ExcludeFromPackageFiles>
      
  8. File [nama proyek].wpp.targets sekarang akan menyerupai ini:

    <Project ToolsVersion="4.0" 
             xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <ItemGroup>   
        <ExcludeFromPackageFolders Include="Internal">
          <FromTarget>ContactManager.Mvc.wpp.targets</FromTarget>
        </ExcludeFromPackageFolders>
        <ExcludeFromPackageFiles Include="Scripts\jquery-1.4.4-
    vsdoc.js;Scripts\jquery-1.4.4.js;Scripts\jquery-ui.js;Scripts\jquery.unobtrusive-ajax.js;Scripts\jquery.validate-vsdoc.js;Scripts\jquery.validate.js;Scripts\jquery.validate.unobtrusive.js;Scripts\MicrosoftAjax.debug.js;Scripts\MicrosoftMvcValidation.debug.js">
          <FromTarget>ContactManager.Mvc.wpp.targets</FromTarget>
        </ExcludeFromPackageFiles>
      </ItemGroup>
    </Project>
    
  9. Simpan dan tutup file [nama proyek].wpp.targets .

Saat berikutnya Anda membangun dan mengemas proyek aplikasi web Anda, WPP akan secara otomatis mendeteksi file .wpp.targets . File dan folder apa pun yang Anda tentukan tidak akan disertakan dalam paket web.

Kesimpulan

Topik ini menjelaskan cara mengecualikan file dan folder tertentu saat Anda membuat paket web, dengan membuat file .wpp.targets kustom di folder yang sama dengan file proyek aplikasi web Anda.

Bacaan lebih lanjut

Untuk informasi selengkapnya tentang menggunakan file proyek Microsoft Build Engine (MSBuild) kustom untuk mengontrol proses penyebaran, lihat Memahami File Proyek dan Memahami Proses Build. Untuk informasi selengkapnya tentang proses pengemasan dan penyebaran, lihat Membangun dan Mengemas Proyek Aplikasi Web, Mengonfigurasi Parameter untuk Penyebaran Paket Web, dan Menyebarkan Paket Web.