Bagikan melalui


ASP.NET Penyebaran Web menggunakan Visual Studio: Menyebarkan File Tambahan

oleh Tom Dykstra

Unduh Proyek Starter

Seri tutorial ini menunjukkan kepada Anda cara menyebarkan (menerbitkan) aplikasi web ASP.NET ke Azure App Service Web Apps atau ke penyedia hosting pihak ketiga, dengan menggunakan Visual Studio 2012 atau Visual Studio 2010. Untuk informasi tentang seri ini, lihat tutorial pertama dalam seri ini.

Gambaran Umum

Tutorial ini menunjukkan cara memperluas alur penerbitan web Visual Studio untuk melakukan tugas tambahan selama penyebaran. Tugasnya adalah menyalin file tambahan yang tidak ada dalam folder proyek ke situs web tujuan.

Untuk tutorial ini, Anda akan menyalin satu file tambahan: robots.txt. Anda ingin menyebarkan file ini ke penahapan tetapi tidak ke produksi. Dalam tutorial Menyebarkan ke Produksi , Anda menambahkan file ini ke proyek dan mengonfigurasi profil penerbitan Produksi untuk mengecualikannya. Dalam tutorial ini Anda akan melihat metode alternatif untuk menangani situasi ini, metode yang akan berguna untuk file apa pun yang ingin Anda sebarkan tetapi tidak ingin disertakan dalam proyek.

Memindahkan file robots.txt

Untuk mempersiapkan metode penanganan yang berbeda robots.txt, di bagian tutorial ini Anda memindahkan file ke folder yang tidak disertakan dalam proyek, dan Anda menghapus robots.txt dari lingkungan penahapan. Anda perlu menghapus file dari penahapan sehingga Anda dapat memverifikasi bahwa metode baru Anda untuk menyebarkan file ke lingkungan tersebut berfungsi dengan benar.

  1. Di Penjelajah Solusi, klik kanan file robots.txt dan klik Kecualikan Dari Proyek.

  2. Dengan menggunakan Windows File Explorer, buat folder baru di folder solusi dan beri nama ExtraFiles.

  3. Pindahkan file robots.txt dari folder proyek ContosoUniversity ke folder ExtraFiles .

    Folder ExtraFiles

  4. Dengan menggunakan alat FTP Anda, hapus file robots.txt dari situs web penahapan.

    Sebagai alternatif, Anda dapat memilih Hapus file tambahan di tujuan di bawah Opsi Penerbitan File pada tab Pengaturan profil penerbitan Penahapan, dan terbitkan ulang ke penahapan.

Memperbarui file profil penerbitan

Anda hanya perlu robots.txt dalam penahapan, jadi satu-satunya profil penerbitan yang perlu Anda perbarui untuk menyebarkannya adalah Penahapan.

  1. Di Visual Studio, buka Staging.pubxml.

  2. Di akhir file, sebelum tag penutup </Project> , tambahkan markup berikut:

    <Target Name="CustomCollectFiles">
        <ItemGroup>
          <_CustomFiles Include="..\ExtraFiles\**\*" />
          <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
            <DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
          </FilesForPackagingFromProject>
        </ItemGroup>
      </Target>
    

    Kode ini membuat target baru yang akan mengumpulkan file tambahan untuk disebarkan. Target terdiri dari satu atau beberapa tugas yang akan dijalankan MSBuild berdasarkan kondisi yang Anda tentukan.

    Atribut Include menentukan bahwa folder untuk menemukan file adalah ExtraFiles, terletak pada tingkat yang sama dengan folder proyek. MSBuild akan mengumpulkan semua file dari folder tersebut dan secara rekursif dari subfolder apa pun (tanda bintang ganda menentukan subfolder rekursif). Dengan kode ini Anda dapat menempatkan beberapa file, dan file dalam subfolder di dalam folder ExtraFiles , dan semua akan disebarkan.

    Elemen DestinationRelativePath menentukan bahwa folder dan file harus disalin ke folder akar situs web tujuan, dalam struktur file dan folder yang sama seperti yang ditemukan di folder ExtraFiles . Jika Anda ingin menyalin folder ExtraFiles itu sendiri, nilainya DestinationRelativePath adalah ExtraFiles\%(RecursiveDir)%(Filename)%(Extension).

  3. Di akhir file, sebelum tag penutup </Project> , tambahkan markup berikut yang menentukan kapan harus menjalankan target baru.

    <PropertyGroup>
        <CopyAllFilesToSingleFolderForPackageDependsOn>
          CustomCollectFiles;
          $(CopyAllFilesToSingleFolderForPackageDependsOn);
        </CopyAllFilesToSingleFolderForPackageDependsOn>
    
        <CopyAllFilesToSingleFolderForMsdeployDependsOn>
          CustomCollectFiles;
          $(CopyAllFilesToSingleFolderForMsdeployDependsOn);
        </CopyAllFilesToSingleFolderForMsdeployDependsOn>
    </PropertyGroup>
    

    Kode ini menyebabkan target baru CustomCollectFiles dijalankan setiap kali target yang menyalin file ke folder tujuan dijalankan. Ada target terpisah untuk penerbitan versus pembuatan paket penyebaran, dan target baru disuntikkan di kedua target jika Anda memutuskan untuk menyebarkan dengan menggunakan paket penyebaran alih-alih menerbitkan.

    File .pubxml sekarang terlihat seperti contoh berikut:

    <?xml version="1.0" encoding="utf-8"?>
    <!--
    This file is used by the publish/package process of your Web project. You can customize the behavior of this process
    by editing this MSBuild file. In order to learn more about this please visit https://go.microsoft.com/fwlink/?LinkID=208121. 
    -->
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <WebPublishMethod>MSDeploy</WebPublishMethod>
        <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
        <LastUsedPlatform>Any CPU</LastUsedPlatform>
        <SiteUrlToLaunchAfterPublish>http://contosou-staging.azurewebsites.net</SiteUrlToLaunchAfterPublish>
        <ExcludeApp_Data>True</ExcludeApp_Data>
        <MSDeployServiceURL>waws-prod-bay-001.publish.azurewebsites.windows.net:443</MSDeployServiceURL>
        <DeployIisAppPath>contosou-staging</DeployIisAppPath>
        <RemoteSitePhysicalPath />
        <SkipExtraFilesOnServer>False</SkipExtraFilesOnServer>
        <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
        <UserName>$contosou-staging</UserName>
        <_SavePWD>True</_SavePWD>
        <PublishDatabaseSettings>
          <Objects xmlns="">
            <ObjectGroup Name="SchoolContext" Order="1" Enabled="True">
              <Destination Path="Data Source=tcp:sk0264hvc9.database.windows.net,1433;Initial Catalog=ContosoUniversity-staging;User ID=CU-staging-admin@sk0264hvc9;Password=" Name="Data Source=tcp:sk0264hvc9.database.windows.net,1433;Initial Catalog=ContosoUniversity-staging;User Id=CU-staging-admin@sk0264hvc9;Password=" />
              <Object Type="DbCodeFirst">
                <Source Path="DBMigration" DbContext="ContosoUniversity.DAL.SchoolContext, ContosoUniversity.DAL" MigrationConfiguration="ContosoUniversity.DAL.Migrations.Configuration, ContosoUniversity.DAL" Origin="Configuration" />
              </Object>
            </ObjectGroup>
            <ObjectGroup Name="DefaultConnection" Order="2" Enabled="False">
              <Destination Path="Data Source=tcp:sk0264hvc9.database.windows.net,1433;Initial Catalog=ContosoUniversity-staging;User ID=CU-staging-admin@sk0264hvc9;Password=" Name="Data Source=tcp:sk0264hvc9.database.windows.net,1433;Initial Catalog=ContosoUniversity-staging;User Id=CU-staging-admin@sk0264hvc9;Password=" />
              <Object Type="DbDacFx">
                <PreSource Path="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-ContosoUniversity.mdf;Initial Catalog=aspnet-ContosoUniversity;Integrated Security=True" includeData="False" />
                <Source Path="$(IntermediateOutputPath)AutoScripts\DefaultConnection_IncrementalSchemaOnly.dacpac" dacpacAction="Deploy" />
              </Object>
              <UpdateFrom Type="Web.Config">
                <Source MatchValue="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;Initial Catalog=aspnet-ContosoUniversity;AttachDBFilename=|DataDirectory|\aspnet-ContosoUniversity.mdf" MatchAttributes="$(UpdateFromConnectionStringAttributes)" />
              </UpdateFrom>
              <Object Type="DbFullSql" Enabled="False">
                <Source Path="..\aspnet-data-prod.sql" Transacted="False" />
              </Object>
            </ObjectGroup>
          </Objects>
        </PublishDatabaseSettings>
        <EnableMSDeployBackup>False</EnableMSDeployBackup>
      </PropertyGroup>
      <ItemGroup>
        <MSDeployParameterValue Include="$(DeployParameterPrefix)DefaultConnection-Web.config Connection String">
          <ParameterValue>Data Source=tcp:sk0264hvc9.database.windows.net,1433;Initial Catalog=ContosoUniversity-staging;User Id=CU-staging-admin@sk0264hvc9;Password=</ParameterValue>
        </MSDeployParameterValue>
        <MSDeployParameterValue Include="$(DeployParameterPrefix)SchoolContext-Web.config Connection String">
          <ParameterValue>Data Source=tcp:sk0264hvc9.database.windows.net,1433;Initial Catalog=ContosoUniversity-staging;User Id=CU-staging-admin@sk0264hvc9;Password=</ParameterValue>
        </MSDeployParameterValue>
      </ItemGroup>
      <Target Name="CustomCollectFiles">
        <ItemGroup>
          <_CustomFiles Include="..\ExtraFiles\**\*" />
          <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
            <DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
          </FilesForPackagingFromProject>
        </ItemGroup>
      </Target>
      <PropertyGroup>
        <CopyAllFilesToSingleFolderForPackageDependsOn>
          CustomCollectFiles;
          $(CopyAllFilesToSingleFolderForPackageDependsOn);
        </CopyAllFilesToSingleFolderForPackageDependsOn>
    
        <CopyAllFilesToSingleFolderForMsdeployDependsOn>
          CustomCollectFiles;
          $(CopyAllFilesToSingleFolderForMsdeployDependsOn);
        </CopyAllFilesToSingleFolderForMsdeployDependsOn>
      </PropertyGroup>
    </Project>
    
  4. Simpan dan tutup file Staging.pubxml .

Terbitkan ke penahapan

Dengan menggunakan publikasi satu klik atau baris perintah, terbitkan aplikasi dengan menggunakan profil Penahapan.

Jika Anda menggunakan penerbitan satu klik, Anda dapat memverifikasi di jendela Pratinjau bahwa robots.txt akan disalin. Jika tidak, gunakan alat FTP Anda untuk memverifikasi bahwa file robots.txt berada di folder akar situs web setelah penyebaran.

Ringkasan

Ini menyelesaikan serangkaian tutorial tentang penyebaran aplikasi web ASP.NET ke penyedia hosting pihak ketiga. Untuk informasi selengkapnya tentang salah satu topik yang tercakup dalam tutorial ini, lihat Peta Konten Penyebaran ASP.NET.

Informasi selengkapnya

Jika Anda tahu cara bekerja dengan file MSBuild, Anda dapat mengotomatiskan banyak tugas penyebaran lainnya dengan menulis kode dalam file .pubxml (untuk tugas khusus profil) atau file proyek .wpp.targets (untuk tugas yang berlaku untuk semua profil). Untuk informasi selengkapnya tentang file .pubxml dan .wpp.targets , lihat Cara: Mengedit Pengaturan Penyebaran di File Profil Penerbitan (.pubxml) dan File .wpp.targets di Proyek Web Visual Studio. Untuk pengenalan dasar kode MSBuild, lihat Anatomi File Proyek dalam Seri Penyebaran Perusahaan: Memahami File Proyek. Untuk mempelajari cara bekerja dengan file MSBuild untuk melakukan tugas untuk skenario Anda sendiri, lihat buku ini: Di dalam Microsoft Build Engine: Menggunakan MSBuild dan Team Foundation Build oleh Sayed Ibraham Hashimi dan William Bartholomew.

Pengakuan

Saya ingin mengucapkan terima kasih kepada orang-orang berikut yang memberikan kontribusi signifikan pada konten seri tutorial ini: