Dağıtım Komut Dosyası Oluşturma ve Çalıştırma

Jason Lee tarafından

PDF 'YI indir

Bu konuda, Microsoft Build Engine (MSBuild) proje dosyalarını kullanarak bir dağıtımı tek adımlı, yinelenebilir bir işlem olarak çalıştırmanıza olanak tanıyan bir komut dosyasının nasıl oluşturulacağı açıklanmaktadır.

Bu konu, Fabrikam, Inc adlı kurgusal bir şirketin Kurumsal Dağıtım gereksinimlerini temel alarak bir öğretici serisinin bir parçasını oluşturur. Bu öğretici serisi, bir ASP.NET MVC—3 uygulaması, WINDOWS COMMUNICATION FOUNDATION—(WCF) hizmeti ve bir veritabanı projesi dahil, gerçekçi bir karmaşıklık düzeyine sahip bir Web uygulamasını temsil etmek üzere bir örnek çözüm olan Contact Manager çözümünü kullanır.

Bu öğreticilerin temelini oluşturan dağıtım yöntemi, derleme işleminin her hedef ortam için uygulanan derleme yönergelerini içeren iki proje—dosyası tarafından denetlendiği ve ortama özgü derleme ve dağıtım ayarlarını Içeren, derleme işlemini anlama bölümünde açıklanan bölünmüş proje dosyası yaklaşımını temel alır. Derleme zamanında, ortama özgü proje dosyası, derleme yönergelerinin tam bir kümesini oluşturmak için ortam agtik proje dosyası ile birleştirilir.

İşleme genel bakış

Bu konu başlığında, hedef ortamınıza yinelenebilir bir dağıtım gerçekleştirmek için bu proje dosyalarını kullanan bir komut dosyası oluşturmayı ve çalıştırmayı öğreneceksiniz. Temelde, komut dosyasının yalnızca bir MSBuild komutu içermesi gerekir:

  • MSBuild 'in ortam-agstik Publish. proj dosyasını yürütmesini söyler.
  • Publish. proj dosyasına, ortama özgü proje ayarlarını ve nerede bulunacağı dosyayı içerdiğini söyler.

MSBuild komutu oluşturma

Derleme işlemini anlamabölümünde açıklandığı gibi, örneğin,— env-dev. proj—gibi ortama özgü proje dosyası, derleme zamanında ortam belirsiz Publish. proj dosyasına aktarılmak üzere tasarlanmıştır. Birlikte, bu iki dosya, çözümünüzü nasıl derleyip dağıtacağınızı söyleyen bir dizi yönerge sağlar.

Publish. proj dosyası ortama özgü proje dosyasını içeri aktarmak Için bir içeri aktarma öğesi kullanır.

<Import Project="$(TargetEnvPropsFile)"/>

Bu nedenle, Contact Manager çözümünü derlemek ve dağıtmak için MSBuild. exe ' yi kullandığınızda şunları yapmanız gerekir:

  • Publish. proj dosyasında MSBuild. exe ' yi çalıştırın.
  • Targetenvpropsfileadlı bir komut satırı parametresi sağlayarak ortama özgü proje dosyasının konumunu belirtin.

Bunu yapmak için MSBuild komutunuz şuna benzemelidir:

msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj

Buradan, yinelenebilir, tek adımlı bir dağıtıma geçiş yapmak için basit bir adımdır. Tek yapmanız gereken, MSBuild komutlarınızı bir. cmd dosyasına eklemektir. Contact Manager çözümünde, Yayımla klasörü, tam olarak bunu yapan Publish-dev. cmd adlı bir dosya içerir.

%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe Publish.proj /fl /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj
echo 
pause

Note

/Fl anahtarı, MSBuild. exe ' nin çağrıldığı çalışma dizininde MSBuild. log adlı bir günlük dosyası oluşturmak için MSBuild 'e bildirir.

Contact Manager çözümünü dağıtmak veya yeniden dağıtmak için tüm yapmanız gereken Publish-dev. cmd dosyasını çalıştırmaktır. Dosyayı çalıştırdığınızda MSBuild şu şekilde olur:

  • Çözümdeki tüm projeleri derleyin.
  • Web uygulaması projeleri için dağıtılabilir Web paketleri oluşturun.
  • Veritabanı projeleri için. dbschema ve. DeployManifest dosyaları oluşturun.
  • Web paketlerini Web sunucusuna dağıtın.
  • Veritabanını veritabanı sunucusuna dağıtın.

Dağıtımı çalıştırma

Hedef ortamınız için bir komut dosyası oluşturduğunuzda, yalnızca dosyayı çalıştırarak tüm dağıtımı tamamlayabilmelisiniz.

Iletişim Yöneticisi çözümünü test ortamınıza dağıtmak için

  1. Geliştirici iş istasyonunuzda Windows Gezgini ' ni açın ve Publish-dev. cmd dosyasının konumuna gidin.

  2. Dosyayı çalıştırmak için çift tıklayın.

  3. Dosya Aç – güvenlik uyarısı iletişim kutusu görüntülenirse Çalıştır' a tıklayın.

  4. Yapılandırma ayarlarınız ve test sunucularınız doğru ayarlandıysa, MSBuild proje dosyalarını işlemeyi tamamladığında, komut Istemi penceresinde bir Yapı başarılı iletisi gösterilir.

  5. Çözümü bu ortama ilk kez dağıttığınız zaman, ContactManager veritabanındaki DB_datawriter ve DB_DataReader rollerine test Web sunucusu makine hesabını eklemeniz gerekir. Bu yordam, Web dağıtımı yayımlama için bir veritabanı sunucusunu yapılandırmabölümünde açıklanmaktadır.

    Note

    Bu izinleri yalnızca veritabanını oluştururken atamanız gerekir. Varsayılan olarak, derleme işlemi her dağıtımda—veritabanını yeniden oluşturmayacak, var olan veritabanını en son şemayla karşılaştırır ve yalnızca gerekli değişiklikleri yapar. Sonuç olarak, yalnızca çözümü ilk kez dağıttığınızda bu veritabanı rollerini eşlemeniz gerekir.

  6. Internet Explorer 'ı açın ve Contact Manager uygulamasının URL 'sine gidin (örneğin, http://testweb1:85/ContactManager/).

  7. Uygulamanın beklendiği gibi çalıştığını ve kişiler ekleyebildiğinizi doğrulayın.

Sonuç

MSBuild yönergelerinizi içeren bir komut dosyası oluşturmak, belirli bir hedef ortama çok projeli bir çözüm oluşturmanın ve dağıtmanın hızlı ve kolay bir yolunu sağlar. Çözümünüzü birden çok hedef ortama tekrar tekrar dağıtmanız gerekiyorsa, birden çok komut dosyası oluşturabilirsiniz. Her komut dosyasında, MSBuild komutu aynı evrensel proje dosyasını oluşturur, ancak ortama özgü farklı bir proje dosyası belirtir. Örneğin, bir geliştirici veya test ortamında yayımlanacak bir komut dosyası bu MSBuild komutunu içerebilir:

msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj

Hazırlama ortamında yayımlanacak bir komut dosyası bu MSBuild komutunu içerebilir:

msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Stage.proj

Note

Kendi sunucu ortamlarınız için ortama özgü proje dosyalarını özelleştirmeye ilişkin yönergeler için bkz. hedef ortam Için dağıtım özelliklerini yapılandırma.

Ayrıca, MSBuild komutlarınızda özellikleri geçersiz kılarak veya farklı anahtarlar ayarlayarak her bir ortam için yapı işlemini özelleştirebilirsiniz. Daha fazla bilgi için bkz. MSBuild komut satırı başvurusu.