SORU
22 HAZİRAN 2010, Salı


Nasıl msbuild ile Web Yayımlamak için?

Visual Studio 2010 dosya sistemi konumuna Web'de yayınlamak için izin veren Yayımla komutunu Uygulama Projesi vardır. Benim bir Programdır bu gibi çözüm runner veya msbuild ile yapmak istiyorum yani server kurmak istiyorum. Hedef Yayımlamak, ama bu ClickOnce için olabilir kullanarak denedim:

msbuild Project.csproj /t:Publish /p:Configuration=Deploy

Ben temelde web dağıtım projesi ne yaptığını tam olarak, ama bu eklenti olmadan yapmak istiyorum. Bu WAP derleme, herhangi bir yürütme için gereksiz dosyaları kaldırmak, herhangi gerçekleştirmek web.config transformations ve belli bir yere çıktı kopyalamak istiyorum.

Benim ÇözümJeff Gümüş cevabı dayalı

<Target Name="Deploy">
    <MSBuild Projects="$(SolutionFile)" 
             Properties="Configuration=$(Configuration);DeployOnBuild=true;DeployTarget=Package" 
             ContinueOnError="false" />
    <Exec Command=""$(ProjectPath)\obj\$(Configuration)\Package\$(ProjectName).deploy.cmd" /y /m:$(DeployServer) -enableRule:DoNotDeleteRule" 
          ContinueOnError="false" />
</Target>

CEVAP
23 HAZİRAN 2010, ÇARŞAMBA


Çoğunlukla özel bir msbuild komut dosyası olmadan çalışıyor. Aşağıda bununla ilgili bir Programdır yapılandırma ayarları oluştur:

Artifact paths: %system.teamcity.build.workingDir%\MyProject\obj\Debug\Package\PackageTmp 
Type of runner: MSBuild (Runner for MSBuild files) 
Build file path: MyProject\MyProject.csproj 
Working directory: same as checkout directory 
MSBuild version: Microsoft .NET Framework 4.0 
MSBuild ToolsVersion: 4.0 
Run platform: x86 
Targets: Package 
Command line parameters to MSBuild.exe: /p:Configuration=Debug

Bu, (web.derleme paketi olacak dönüşüm config) ve eser olarak çıktı kaydetmek. Eksik olan tek şey belli bir yere çıktı kopyalıyor, ama bu da bir msbuild komut ile bir Programdır build yapılandırma obje bağımlılığı ile başka bir ya da yapılabilir.

Güncelleme

Burada, (web.derleme paketi olacak msbuild komut dosyası var dönüşüm config) ve çıktı hazırlama sunucum için

<?xml version="1.0" encoding="utf-8" ?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
        <SolutionName>MySolution</SolutionName>
        <SolutionFile>$(SolutionName).sln</SolutionFile>
        <ProjectName>MyProject</ProjectName>
        <ProjectFile>$(ProjectName)\$(ProjectName).csproj</ProjectFile>
    </PropertyGroup>

    <Target Name="Build" DependsOnTargets="BuildPackage;CopyOutput" />

    <Target Name="BuildPackage">
        <MSBuild Projects="$(SolutionFile)" ContinueOnError="false" Targets="Rebuild" Properties="Configuration=$(Configuration)" />
        <MSBuild Projects="$(ProjectFile)" ContinueOnError="false" Targets="Package" Properties="Configuration=$(Configuration)" />
    </Target>

    <Target Name="CopyOutput">
        <ItemGroup>
            <PackagedFiles Include="$(ProjectName)\obj\$(Configuration)\Package\PackageTmp\**\*.*"/>
        </ItemGroup>
        <Copy SourceFiles="@(PackagedFiles)" DestinationFiles="@(PackagedFiles->'\\build02\wwwroot\$(ProjectName)\$(Configuration)\%(RecursiveDir)%(Filename)%(Extension)')"/>
    </Target>
</Project>

Ayrıca Tanımına etiketten SolutionName ve Veritabanı özellikleri kaldırmak ve onları msbuild için iletebilirsiniz.

msbuild build.xml /p:Configuration=Deploy;SolutionName=MySolution;ProjectName=MyProject

Güncelleme 2

Bu soru hala trafik iyi bir anlaşma alır, Web Deploy kullanan geçerli senaryom benim cevabım (MSDeploy olarak da bilinir) güncellenmesi değer olduğunu düşündüm.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build" ToolsVersion="4.0">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
    <ProjectFile Condition=" '$(ProjectFile)' == '' ">$(ProjectName)\$(ProjectName).csproj</ProjectFile>
    <DeployServiceUrl Condition=" '$(DeployServiceUrl)' == '' ">http://staging-server/MSDeployAgentService</DeployServiceUrl>
  </PropertyGroup>

  <Target Name="VerifyProperties">
    <!-- Verify that we have values for all required properties -->
    <Error Condition=" '$(ProjectName)' == '' " Text="ProjectName is required." />
  </Target>

  <Target Name="Build" DependsOnTargets="VerifyProperties">
    <!-- Deploy using windows authentication -->
    <MSBuild Projects="$(ProjectFile)"
             Properties="Configuration=$(Configuration);
                             MvcBuildViews=False;
                             DeployOnBuild=true;
                             DeployTarget=MSDeployPublish;
                             CreatePackageOnPublish=True;
                             AllowUntrustedCertificate=True;
                             MSDeployPublishMethod=RemoteAgent;
                             MsDeployServiceUrl=$(DeployServiceUrl);
                             SkipExtraFilesOnServer=True;
                             UserName=;
                             Password=;"
             ContinueOnError="false" />
  </Target>
</Project>

Programdır, parametreleri env.Configuration, env.ProjectName env.DeployServiceUrl adında var. MSBuild kaçak yapı dosyası yolu ve parametreleri otomatik olarak yüklenecektir (Komut satırı parametreleri bunları belirtmek zorunda değilsiniz) geçirilir.

Komut satırından da çalıştırabilirsiniz:

msbuild build.xml /p:Configuration=Staging;ProjectName=MyProject;DeployServiceUrl=http://staging-server/MSDeployAgentService

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Disney Pets and Animals

    Disney Pets

    29 ŞUBAT 2012
  • We've moved!

    We've moved!

    7 Ocak 2008
  • THELIFEOFPRICE

    THELIFEOFPRI

    16 Mart 2011