ASP.NET nasazení webu pomocí sady Visual Studio: Nasazení dalších souborů
V této sérii kurzů se dozvíte, jak pomocí sady Visual Studio 2012 nebo Visual Studio 2010 nasadit (publikovat) ASP.NET webovou aplikaci do Azure App Service Web Apps nebo u poskytovatele hostingu třetí strany. Informace o této sérii najdete v prvním kurzu této série.
Přehled
V tomto kurzu se dozvíte, jak rozšířit kanál publikování webu sady Visual Studio, aby během nasazení udě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 soubor navíc: 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 jste profil publikování Production 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
Abyste se připravili na jiný způsob 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řípravy, abyste mohli ověřit, že nová metoda nasazení souboru do tohoto prostředí funguje správně.
V Průzkumník řešení klikněte pravým tlačítkem na soubor robots.txt a klikněte na Vyloučit z projektu.
Pomocí windows Průzkumník souborů vytvořte novou složku ve složce řešení a pojmenujte ji ExtraFiles.
Přesuňte souborrobots.txt ze složky projektu ContosoUniversity do složky ExtraFiles .
Pomocí nástroje FTP odstraňte souborrobots.txt z přípravného webu.
Alternativně můžete vybrat Odebrat další soubory v cíli v části Možnosti publikování souboru na kartě Nastavení profilu přípravného publikování a znovu publikovat na pracovní.
Aktualizace souboru profilu publikování
Potřebujete jenom robots.txt v přípravné fázi, takže jediný profil publikování, který potřebujete aktualizovat, abyste ho mohli nasadit, je Staging.
V sadě Visual Studio otevřete soubor Staging.pubxml.
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ý shromáždí další soubory k nasazení. Cíl se skládá z jedné nebo více úloh, které bude nástroj MSBuild provádět na základě zadaných podmínek.
Atribut
Include
určuje, že složka, ve které se mají soubory najít, je ExtraFiles, která se nachází na stejné úrovni jako složka projektu. Nástroj MSBuild shromáždí všechny soubory z této složky a rekurzivně ze všech podsložek (dvojitá hvězdička určuje rekurzivní podsložky). S tímto kódem můžete umístit více souborů a souborů do podsložek ve složce ExtraFiles a všechny se nasadí.Element
DestinationRelativePath
určuje, že složky a soubory mají být zkopírovány do kořenové složky cílového webu ve stejné struktuře souborů a složek, jako jsou nalezeny ve složce ExtraFiles . Pokud byste chtěli zkopírovat samotnou složku ExtraFiles ,DestinationRelativePath
hodnota by byla ExtraFiles\%(RecursiveDir)%(Název_souboru)%(Rozšíření).Na konec souboru před uzavírací
</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í vždy, když se spustí cíl, který kopíruje soubory do cílové složky. Existuje samostatný cíl pro publikování a vytvoření balíčku pro nasazení a nový cíl se vloží do obou cílů v případě, že se rozhodnete místo publikování nasadit pomocí balíčku pro nasazení.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>
Uložte a zavřete soubor Staging.pubxml .
Publikovat do přípravného prostředí
Publikováním aplikace jedním kliknutím nebo příkazovým řádkem publikujte aplikaci pomocí přípravného profilu.
Pokud použijete publikování jedním kliknutím, můžete v okně Náhled ověřit, že serobots.txt zkopírují. V opačném případě pomocí nástroje FTP ověřte, že je souborrobots.txt po nasazení v kořenové složce webu.
Souhrn
Tím se dokončí tato série kurzů o nasazení webové aplikace ASP.NET u poskytovatele hostingu třetí strany. Další informace o všech tématech probíraných v těchto kurzech najdete v tématu Mapa obsahu nasazení ASP.NET.
Další informace
Pokud víte, jak pracovat se soubory MSBuild, můžete automatizovat mnoho dalších úloh nasazení tím, že napíšete kód v souborech .pubxml (pro úlohy specifické pro profil) nebo v souboru projektu .wpp.targets (pro úkoly, které platí pro všechny profily). Další informace o souborech .pubxml a .wpp.targets najdete v tématu Postupy: Úprava nastavení nasazení v souborech profilu publikování (.pubxml) a v souboru .wpp.targets ve webových projektech sady Visual Studio. Základní úvod do kódu NÁSTROJE MSBuild najdete v tématu Anatomie souboru projektu v řadě nasazení organizace: Porozumění souboru projektu. Informace o tom, jak pracovat se soubory MSBuild a provádět úkoly pro vlastní scénáře, najdete v této knize: Inside the Microsoft Build Engine: Using MSBuild and Team Foundation Build by Sayed Ibraham Hashimi and 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ů:
- Alberto Poblacion, MVP & MCT, Španělsko
- Jarod Ferguson, MVP pro vývoj datových platforem, USA
- Drsný Mittal, Microsoft
- Jon Galloway (twitter: @jongalloway)
- Kristina Olson, Microsoft
- Mike Pope, Microsoft
- Mohit Srivastava, Microsoft
- Raffaele Rialdi, Itálie
- Rick Anderson, Microsoft
- Sayed Hashimi, Microsoft(twitter: @sayedihashimi)
- Scott Hanselman (twitter: @shanselman)
- Scott Hunter, Microsoft (twitter: @coolcsh)
- Srđan Božović, Srbsko
- Vishal Joshi, Microsoft (twitter: @vishalrjoshi)