Dosya ve Klasörleri Dağıtımdan Dışlama
tarafından Jason Lee
Bu konuda, bir web uygulaması projesi derleyip paketlerken dosyaları ve klasörleri bir web dağıtım paketinden nasıl hariç tutabileceğiniz açıklanmaktadır.
Bu konu, Fabrikam, Inc. adlı kurgusal bir şirketin kurumsal dağıtım gereksinimlerini temel alan bir dizi öğreticinin bir bölümünü oluşturur. Bu öğretici serisi, ASP.NET MVC 3 uygulaması, Windows Communication Foundation (WCF) hizmeti ve veritabanı projesi dahil olmak üzere gerçekçi bir karmaşıklık düzeyine sahip bir web uygulamasını temsil etmek için örnek bir çözüm (Contact Manager çözümü) kullanır.
Bu öğreticilerin merkezinde yer alan dağıtım yöntemi, derleme işleminin iki proje dosyası tarafından denetlendiği Proje Dosyasını Anlama bölümünde açıklanan bölünmüş proje dosyası yaklaşımını temel alır: biri her hedef ortama uygulanan derleme yönergelerini, diğeri de ortama özgü derleme ve dağıtım ayarlarını içerir. Derleme zamanında, ortama özgü proje dosyası, tam bir derleme yönergeleri kümesi oluşturmak için ortama özgü belirsiz proje dosyasıyla birleştirilir.
Genel Bakış
Visual Studio 2010'da bir web uygulaması projesi oluşturduğunuzda, Web Yayımlama İşlem Hattı (WPP), derlenmiş web uygulamanızı dağıtılabilir bir web paketinde paketleyerek bu derleme işlemini genişletmenize olanak tanır. Ardından, bu web paketini uzak bir IIS web sunucusuna dağıtmak için Internet Information Services (IIS) Web Dağıtım Aracı'nı (Web Dağıtımı) kullanabilir veya web paketini IIS Yöneticisi aracılığıyla el ile içeri aktarabilirsiniz. Bu paketleme işlemi Web Uygulaması Projeleri Oluşturma ve Paketleme bölümünde açıklanmıştır.
Peki web paketinize nelerin dahil olduğunu nasıl denetleyebilirsiniz? Visual Studio'daki proje ayarları, temel alınan proje dosyası aracılığıyla birçok senaryo için yeterli denetim sağlar. Ancak bazı durumlarda web paketinizin içeriğini belirli hedef ortamlara uyarlamak isteyebilirsiniz. Örneğin, uygulamanızı bir test ortamına dağıtırken günlük dosyaları için bir klasör eklemek, ancak uygulamayı hazırlama veya üretim ortamına dağıtırken klasörü dışlamak isteyebilirsiniz. Bu konu başlığında bunu nasıl yapabileceğiniz gösterilir.
Varsayılan Olarak Ne Dahil Olur?
Visual Studio'da web uygulaması proje özelliklerinizi yapılandırdığınızda, Web'i Paketle/Yayımla sayfasındaki Dağıtılacak öğeler listesi, web dağıtım paketinize eklemek istediklerinizi belirtmenize olanak tanır. Varsayılan olarak, bu ayar Yalnızca bu uygulamayı çalıştırmak için gereken dosyalar olarak ayarlanır.
Yalnızca bu uygulamayı çalıştırmak için gereken dosyalar'ı seçtiğinizde, WPP web paketine hangi dosyaların eklenmesi gerektiğini belirlemeye çalışır. Buna aşağıdakiler dahildir:
- Proje için tüm derleme çıkışları.
- İçerik derleme eylemiyle işaretlenmiş tüm dosyalar.
Not
Hangi dosyaların bu dosyaya dahil edileceğini belirleyen mantık:
%PROGRAMFILES%\MSBuild\Microsoft\VisualStudio\v10.0\Web\ Microsoft.Web.Publishing.OnlyFilesToRunTheApp.targets
Belirli Dosya ve Klasörleri Dışlama
Bazı durumlarda, hangi dosya ve klasörlerin dağıtılacağı üzerinde daha ayrıntılı denetime sahip olmak istersiniz. Önceden hangi dosyaları hariç tutmak istediğinizi biliyorsanız ve dışlama tüm hedef ortamlar için geçerliyse, her dosyanın Derleme Eylemi'niYok olarak ayarlayabilirsiniz.
Belirli dosyaları dağıtımdan dışlamak için
- Çözüm Gezgini penceresinde dosyaya sağ tıklayın ve ardından Özellikler'e tıklayın.
- Özellikler penceresinin Derleme Eylemi satırında Yok'a tıklayın.
Ancak, bu yaklaşım her zaman uygun değildir. Örneğin, hedef ortamınıza göre ve Visual Studio dışından hangi dosya ve klasörlerin dahil olduğunu değiştirmek isteyebilirsiniz. Örneğin, Contact Manager örnek çözümünde ContactManager.Mvc projesinin içeriğine göz atın:
- İç klasörü, geliştiricinin geliştirme amacıyla yerel veritabanlarını oluşturmak, bırakmak ve doldurmak için kullandığı bazı SQL betiklerini içerir. Bu klasördeki hiçbir şey hazırlama veya üretim ortamına dağıtılmamalıdır.
- Betikler klasörü birkaç JavaScript dosyası içerir. Bu dosyaların çoğu yalnızca hata ayıklamayı desteklemek veya Visual Studio'da IntelliSense sağlamak için eklenmiştir. Bu dosyalardan bazıları hazırlama veya üretim ortamlarına dağıtılmamalıdır. Ancak, sorun gidermeyi kolaylaştırmak için bunları bir geliştirici test ortamına dağıtmak isteyebilirsiniz.
Proje dosyalarınızı belirli dosya ve klasörleri hariç tutmak üzere işleyebilirsiniz ancak bunun daha kolay bir yolu vardır. WPP, ExcludeFromPackageFolders ve ExcludeFromPackageFiles adlı öğe listeleri oluşturarak dosyaları ve klasörleri dışlamaya yönelik bir mekanizma içerir. Bu listelere kendi öğelerinizi ekleyerek bu mekanizmayı genişletebilirsiniz. Bunu yapmak için şu üst düzey adımları tamamlamanız gerekir:
Proje dosyanızla aynı klasörde [proje adı].wpp.targets adlı özel bir proje dosyası oluşturun.
Not
.wpp.targets dosyasının, derleme ve dağıtım işlemini denetlemek için kullandığınız özel proje dosyalarıyla aynı klasör yerine web uygulaması proje dosyanızla aynı klasöre (örneğin, ContactManager.Mvc.csproj) gitmesi gerekir.
.wpp.targets dosyasına bir ItemGroup öğesi ekleyin.
ItemGroup öğesinde, gerektiğinde belirli dosya ve klasörleri hariç tutmak için ExcludeFromPackageFolders ve ExcludeFromPackageFiles öğelerini ekleyin.
Bu , bu .wpp.targets dosyasının temel yapısıdır:
<Project ToolsVersion="4.0"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ExcludeFromPackageFolders Include="[semi-colon-separated folder list]">
<FromTarget>[arbitrary metadata value]</FromTarget>
</ExcludeFromPackageFolders>
<ExcludeFromPackageFiles Include="[semi-colon-separated file list]">
<FromTarget>[arbitrary metadata value]</FromTarget>
</ExcludeFromPackageFiles>
</ItemGroup>
</Project>
Her öğenin FromTarget adlı bir öğe meta veri öğesi içerdiğini unutmayın. Bu, derleme işlemini etkilemeyen isteğe bağlı bir değerdir; yalnızca, birisi derleme günlüklerini gözden geçirmesi durumunda belirli dosya veya klasörlerin neden atlandığını belirtmeye hizmet eder.
Web Paketinden Dosya ve Klasörleri Dışlama
Sonraki yordamda bir web uygulaması projesine .wpp.targets dosyasının nasıl ekleneceği ve projenizi oluştururken belirli dosya ve klasörleri web paketinin dışında tutmak için dosyanın nasıl kullanılacağı gösterilmektedir.
Dosya ve klasörleri bir web dağıtım paketinden dışlamak için
Çözümünüzü Visual Studio 2010'da açın.
Çözüm Gezgini penceresinde web uygulaması proje düğümünüze (örneğin, ContactManager.Mvc) sağ tıklayın, Ekle'nin üzerine gelin ve Yeni Öğe'ye tıklayın.
Yeni Öğe Ekle iletişim kutusunda XML Dosyası şablonunu seçin.
Ad kutusuna [proje adı].wpp.targets (örneğin, ContactManager.Mvc.wpp.targets) yazın ve Ekle'ye tıklayın.
Not
Projenin kök düğümüne yeni bir öğe eklerseniz, dosya proje dosyasıyla aynı klasörde oluşturulur. Klasörü Windows Gezgini'nde açarak bunu doğrulayabilirsiniz.
dosyasına bir Project öğesi ve bir ItemGroup öğesi ekleyin:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> </ItemGroup> </Project>
Klasörleri web paketinin dışında tutmak istiyorsanız, ItemGroup öğesine bir ExcludeFromPackageFolders öğesi ekleyin:
Include özniteliğinde, hariç tutmak istediğiniz klasörlerin noktalı virgülle ayrılmış bir listesini sağlayın.
FromTarget meta veri öğesinde, klasörlerin neden dışlandığını belirtmek için .wpp.targets dosyasının adı gibi anlamlı bir değer sağlayın.
<ExcludeFromPackageFolders Include="Internal"> <FromTarget>ContactManager.Mvc.wpp.targets</FromTarget> </ExcludeFromPackageFolders>
Dosyaları web paketinin dışında tutmak istiyorsanız, ItemGroup öğesine bir ExcludeFromPackageFiles öğesi ekleyin:
Include özniteliğinde, hariç tutmak istediğiniz dosyaların noktalı virgülle ayrılmış bir listesini sağlayın.
FromTarget meta veri öğesinde, .wpp.targets dosyasının adı gibi dosyaların neden dışlandığını belirtmek için anlamlı bir değer sağlayın.
<ExcludeFromPackageFiles Include="Scripts\jquery-1.4.4-vsdoc.js;Scripts\jquery-1.4.4.js;Scripts\jquery-ui.js;Scripts\jquery.unobtrusive-ajax.js;Scripts\jquery.validate-vsdoc.js;Scripts\jquery.validate.js;Scripts\jquery.validate.unobtrusive.js;Scripts\MicrosoftAjax.debug.js;Scripts\MicrosoftMvcValidation.debug.js"> <FromTarget>ContactManager.Mvc.wpp.targets</FromTarget> </ExcludeFromPackageFiles>
[proje adı].wpp.targets dosyası şimdi şuna benzemelidir:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <ExcludeFromPackageFolders Include="Internal"> <FromTarget>ContactManager.Mvc.wpp.targets</FromTarget> </ExcludeFromPackageFolders> <ExcludeFromPackageFiles Include="Scripts\jquery-1.4.4- vsdoc.js;Scripts\jquery-1.4.4.js;Scripts\jquery-ui.js;Scripts\jquery.unobtrusive-ajax.js;Scripts\jquery.validate-vsdoc.js;Scripts\jquery.validate.js;Scripts\jquery.validate.unobtrusive.js;Scripts\MicrosoftAjax.debug.js;Scripts\MicrosoftMvcValidation.debug.js"> <FromTarget>ContactManager.Mvc.wpp.targets</FromTarget> </ExcludeFromPackageFiles> </ItemGroup> </Project>
[proje adı].wpp.targets dosyasını kaydedin ve kapatın.
Web uygulaması projenizi bir sonraki derlemenizde ve paketlediğinizde, WPP .wpp.targets dosyasını otomatik olarak algılar. Belirttiğiniz hiçbir dosya ve klasör web paketine dahil edilmeyecektir.
Sonuç
Bu konuda, web uygulaması proje dosyanızla aynı klasörde özel bir .wpp.targets dosyası oluşturarak bir web paketi oluştururken belirli dosya ve klasörlerin nasıl dışlandığı açıklanmıştır.
Daha Fazla Bilgi
Dağıtım işlemini denetlemek için özel Microsoft Build Engine (MSBuild) proje dosyalarını kullanma hakkında daha fazla bilgi için bkz. Proje Dosyasını Anlama ve Derleme sürecini anlama. Paketleme ve dağıtım işlemi hakkında daha fazla bilgi için bkz. Web Uygulaması Projeleri Oluşturma ve Paketleme, Web Paketi Dağıtımı için Parametreleri Yapılandırma ve Web Paketlerini Dağıtma.