Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
door Tom Dykstra
Deze reeks zelfstudies laat zien hoe u een ASP.NET-webtoepassing implementeert (publiceert) naar Azure App Service Web Apps of naar een externe hostingprovider met behulp van Visual Studio 2012 of Visual Studio 2010. Zie de eerste zelfstudie in de reeks voor meer informatie over de reeks.
Overzicht
In deze zelfstudie ziet u hoe u de Visual Studio-webpublicatiepijplijn kunt uitbreiden om een extra taak uit te voeren tijdens de implementatie. De taak bestaat uit het kopiëren van extra bestanden die zich niet in de projectmap bevinden naar de doelwebsite.
Voor deze zelfstudie kopieert u één extra bestand: robots.txt. U wilt dit bestand implementeren naar de testomgeving, maar niet naar productie. In de zelfstudie Implementeren in productie hebt u dit bestand toegevoegd aan het project en het publicatieprofiel Productie geconfigureerd om het uit te sluiten. In deze zelfstudie ziet u een alternatieve methode voor het afhandelen van deze situatie, een methode die nuttig is voor bestanden die u wilt implementeren, maar die u niet wilt opnemen in het project.
Het robots.txt-bestand verplaatsen
Als u zich wilt voorbereiden op een andere methode voor het afhandelen van robots.txt, verplaatst u het bestand in deze sectie van de zelfstudie naar een map die niet is opgenomen in het project en verwijdert u robots.txt uit de faseringsomgeving. U moet het bestand uit fasering verwijderen, zodat u kunt controleren of de nieuwe methode voor het implementeren van het bestand in die omgeving correct werkt.
Klik in Solution Explorer met de rechtermuisknop op het robots.txt-bestand en klik op Uitsluiten van Project.
Maak met Windows Verkenner een nieuwe map in de oplossingsmap en noem deze ExtraFiles.
Verplaats het bestandrobots.txt van de projectmap ContosoUniversity naar de map ExtraFiles .
Verwijder met behulp van uw FTP-hulpprogramma het robots.txt bestand van de staging-website.
Als alternatief kunt u extra bestanden op bestemming verwijderen selecteren onder Bestandspublicatieopties op het tabblad Instellingen van het staging-publicatieprofiel en opnieuw publiceren naar de stagingomgeving.
Het publicatieprofielbestand bijwerken
U hebt alleen robots.txt nodig in de stagingomgeving, dus het enige publicatieprofiel dat u moet bijwerken om het te implementeren, is het stagingprofiel.
Open Staging.pubxml in Visual Studio.
Voeg aan het einde van het bestand, vóór de afsluitende
</Project>tag, de volgende markeringen toe:<Target Name="CustomCollectFiles"> <ItemGroup> <_CustomFiles Include="..\ExtraFiles\**\*" /> <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)"> <DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath> </FilesForPackagingFromProject> </ItemGroup> </Target>Met deze code maakt u een nieuw doel waarmee extra bestanden worden verzameld die moeten worden geïmplementeerd. Een doel bestaat uit een of meer taken die DOOR MSBuild worden uitgevoerd op basis van de voorwaarden die u opgeeft.
Het
Includekenmerk geeft aan dat de map waarin de bestanden moeten worden gevonden ExtraFiles is, op hetzelfde niveau als de projectmap. MSBuild verzamelt alle bestanden uit die map en recursief van alle submappen (het dubbele sterretje specificeert recursieve submappen). Met deze code kunt u meerdere bestanden en bestanden in submappen in de map ExtraFiles plaatsen en worden alle bestanden geïmplementeerd.Het
DestinationRelativePathelement geeft aan dat de mappen en bestanden moeten worden gekopieerd naar de hoofdmap van de doelwebsite, in dezelfde bestands- en mapstructuur als in de map ExtraFiles . Als u de map ExtraFiles zelf wilt kopiëren, zou deDestinationRelativePathwaarde ExtraFiles\%(RecursiveDir)%(Bestandsnaam)%(Extensie) zijn.Voeg aan het einde van het bestand, vóór de afsluitende
</Project>tag, de volgende markeringen toe die aangeeft wanneer het nieuwe doel moet worden uitgevoerd.<PropertyGroup> <CopyAllFilesToSingleFolderForPackageDependsOn> CustomCollectFiles; $(CopyAllFilesToSingleFolderForPackageDependsOn); </CopyAllFilesToSingleFolderForPackageDependsOn> <CopyAllFilesToSingleFolderForMsdeployDependsOn> CustomCollectFiles; $(CopyAllFilesToSingleFolderForMsdeployDependsOn); </CopyAllFilesToSingleFolderForMsdeployDependsOn> </PropertyGroup>Deze code zorgt ervoor dat het nieuwe
CustomCollectFilesdoel wordt uitgevoerd wanneer het doel dat bestanden naar de doelmap kopieert, wordt uitgevoerd. Er is een afzonderlijk doel voor publiceren versus het maken van implementatiepakketten en het nieuwe doel wordt geïnjecteerd in beide doelen als u besluit om te implementeren met behulp van een implementatiepakket in plaats van te publiceren.Het .pubxml-bestand ziet er nu uit zoals in het volgende voorbeeld:
<?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>Sla het staging.pubxml-bestand op en sluit het.
Publiceren naar fasering
Publiceer de toepassing met behulp van het stagingprofiel, met één klik of via de opdrachtregel.
Als u publiceren met één klik gebruikt, kunt u controleren in het voorbeeldvenster dat robots.txt wordt gekopieerd. Gebruik anders uw FTP-hulpprogramma om te controleren of het robots.txt bestand zich in de hoofdmap van de website bevindt na de implementatie.
Overzicht
Hiermee voltooit u deze reeks zelfstudies over het implementeren van een ASP.NET-webtoepassing naar een externe hostingprovider. Zie het ASP.NET Inhoudsoverzicht voor implementatie voor meer informatie over een van de onderwerpen die in deze zelfstudies worden behandeld.
Meer informatie
Als u weet hoe u met MSBuild-bestanden kunt werken, kunt u veel andere implementatietaken automatiseren door code te schrijven in .pubxml-bestanden (voor profielspecifieke taken) of het project .wpp.targets-bestand (voor taken die van toepassing zijn op alle profielen). Zie Voor meer informatie over .pubxml en .wpp.targets-bestanden: Implementatie-instellingen bewerken in Publicatieprofielbestanden (.pubxml) en het bestand .wpp.targets in Visual Studio Web Projects. Zie The Anatomy of a Project File in Enterprise Deployment Series voor een eenvoudige inleiding tot MSBuild-code : Inzicht in het projectbestand. Zie dit boek voor meer informatie over het werken met MSBuild-bestanden voor het uitvoeren van taken voor uw eigen scenario's: Inside the Microsoft Build Engine: Using MSBuild and Team Foundation Build by Sayed Ibraham Hashimi and William Bartholomew.
Bevestigingen
Ik wil de volgende personen bedanken die belangrijke bijdragen hebben geleverd aan de inhoud van deze reeks zelfstudies:
- Alberto Poblacion, MVP & MCT, Spanje
- Jarod Ferguson, MVP Data Platform-ontwikkeling, Verenigde Staten
- Harsh Mittal, Microsoft
- Jon Galloway (twitter: @jongalloway)
- Kristina Olson, Microsoft
- Mike Pope, Microsoft
- Mohit Srivastava, Microsoft
- Raffaele Rialdi, Italië
- Rick Anderson, Microsoft
- Sayed Hashimi, Microsoft(twitter: @sayedihashimi)
- Scott Hanselman (twitter: @shanselman)
- Scott Hunter, Microsoft (twitter: @coolcsh)
- Srđan Božović, Servië
- Vishal Joshi, Microsoft (twitter: @vishalrjoshi)