ASP.NET webové nasazení pomocí Visual Studio: Nasazení dalších souborů

od Tom Dykstra

Stáhnout úvodní projekt

V této sérii kurzů se dozvíte, jak nasadit (publikovat) webovou aplikaci ASP.NET do Azure App Service Web Apps nebo poskytovatele hostingu třetí strany pomocí sady Visual Studio 2012 nebo Visual Studio 2010. Informace o této sérii najdete v prvním kurzu série.

Přehled

V tomto kurzu se dozvíte, jak rozšířit kanál publikování webu sady Visual Studio tak, aby během nasazování dělal další úlohu. Úkolem je zkopírovat další soubory, které nejsou ve složce projektu na cílový web.

Pro účely tohoto kurzu zkopírujete jeden dodatečný soubor: robots.txt. Tento soubor chcete nasadit do přípravného prostředí, ale ne do produkčního prostředí. V kurzu Nasazení do produkčního prostředí jste tento soubor přidali do projektu a nakonfigurovali profil publikování v produkčním prostředí tak, aby ho vyloučil. V tomto kurzu uvidíte alternativní metodu pro řešení této situace, která bude užitečná pro všechny soubory, které chcete nasadit, ale nechcete je zahrnout do projektu.

Přesunutí souboru robots.txt

Chcete-li se připravit na jinou metodu zpracování robots.txt, v této části kurzu přesunete soubor do složky, která není součástí projektu, a odstraníte robots.txt z přípravného prostředí. Je nutné odstranit soubor z přípravného prostředí, abyste mohli ověřit, že nová metoda nasazení souboru do tohoto prostředí funguje správně.

  1. V Průzkumníku řešení klikněte pravým tlačítkem na soubor robots.txt a klikněte na vyloučit z projektu.

  2. Pomocí Průzkumníka souborů Windows vytvořte novou složku ve složce řešení a pojmenujte ji ExtraFiles.

  3. Přesuňte soubor robots.txt ze složky projektu ContosoUniversity do složky ExtraFiles .

    Složka ExtraFiles

  4. Pomocí nástroje FTP odstraňte soubor robots.txt z přípravného webu.

    Alternativně můžete vybrat Možnost Odebrat další soubory v cíli v části Možnosti publikování souboru na kartě Nastavení přípravného profilu publikování a znovu publikovat do přípravného profilu.

Aktualizace souboru profilu publikování

V prostředí staging potřebujete jenom robots.txt, takže jediný profil publikování, který potřebujete aktualizovat pro nasazení, je Staging.

  1. V aplikaci Visual Studio otevřete Staging.pubxml.

  2. Na konec souboru před uzavírací </Project> značku přidejte následující kód:

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

    Tento kód vytvoří nový cíl , který bude shromažďovat další soubory, které se mají nasadit. Cíl se skládá z jedné nebo více úloh, které msBuild provede na základě zadaných podmínek.

    Atribut Include určuje, že složka, ve které se mají najít soubory, je ExtraFiles, která se nachází na stejné úrovni jako složka projektu. Nástroj MSBuild bude shromažďovat všechny soubory z této složky a rekurzivně z libovolné podsložky (dvojitá hvězdička určuje rekurzivní podsložky). Pomocí tohoto kódu můžete vložit více souborů, včetně souborů umístěných v podsložkách ve složce ExtraFiles, a všechny budou nasazeny.

    Prvek DestinationRelativePath určuje, že složky a soubory by se měly zkopírovat do kořenové složky cílového webu ve stejné struktuře souborů a složek, jak jsou nalezeny ve složce ExtraFiles . Pokud chcete zkopírovat samotnou složku ExtraFiles , DestinationRelativePath hodnota by byla ExtraFiles\%(RecursiveDir)%(Název souboru)%(Extension).

  3. Na konec souboru před závěrečnou </Project> značku přidejte následující kód, který určuje, kdy se má nový cíl spustit.

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

    Tento kód způsobí, že se nový CustomCollectFiles cíl spustí při každém spuštění cíle, který kopíruje soubory do cílové složky. Existuje samostatný cíl pro publikování a vytvoření balíčku nasazení a nový cíl se vloží do obou cílů v případě, že se rozhodnete nasadit pomocí balíčku pro nasazení místo publikování.

    Soubor .pubxml teď vypadá jako v následujícím příkladu:

    <?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. Uložte a zavřete soubor Staging.pubxml .

Publikování do přípravného prostředí

Pomocí jednorázového publikování nebo příkazového řádku publikujte aplikaci pomocí přípravného profilu.

Pokud použijete publikování jedním kliknutím, můžete ověřit v okně náhledu, že soubor robots.txt bude zkopírován. V opačném případě pomocí nástroje FTP ověřte, zda je soubor robots.txt po nasazení v kořenové složce webu.

Shrnutí

Tím se dokončí tato série kurzů o nasazení webové aplikace ASP.NET na poskytovatele hostingu třetí strany. Další informace o všech tématech popsaných v těchto kurzech najdete v mapě obsahu nasazení ASP.NET.

Více informací

Pokud víte, jak pracovat se soubory MSBuild, můžete automatizovat mnoho dalších úloh nasazení napsáním kódu v souborech .pubxml (pro úlohy specifické pro profil) nebo souborem .wpp.targets projektu (pro úkoly, které platí pro všechny profily). Další informace o souborech .pubxml a .wpp.targets naleznete v tématu Postupy: Úprava nastavení nasazení v souborech publikování (.pubxml) a souboru .wpp.targets ve webových projektech sady Visual Studio. Základní úvod do kódu MSBuild naleznete v tématu Anatomie souboru projektu v Série nasazení podnikové: Porozumění souboru projektu. Informace o tom, jak pracovat se soubory MSBuild k provádění úkolů pro vlastní scénáře, najdete v této knize: Inside the Microsoft Build Engine: Using MSBuild and Team Foundation Build od Sayed Ibraham Hashimi a William Bartholomew.

Poděkování

Chtěl bych poděkovat následujícím lidem, kteří významně přispěli k obsahu této série kurzů: