2013-05-01 20 views
30

Kuruluşum için seçtiğim yapılandırmayla ilişkili web.config dönüşümü TFS Build'im oluşturmaya çalışıyorum. Yapıyı çalıştırdığımda web.config dosyasını kontrol ederim, hiçbir dönüşüm uygulanmadı. VS2012'den yayınladığımda, dönüşüm doğru şekilde çalışıyor.TFS 2012 ve web.config dönüştürür

TFS 2012'yi (Güncelleştirme 2) kurdum ve ayrı bir sunucu oluşturmak için var. Yapılandırma sunucusunda VS2012 yüklü değil, ancak C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web ve WebApplications klasörlerini ve dosyalarını dev sunucumdan yapı sunucusuna kopyaladım.

Projemde bazı yapılandırmalar oluşturdum ve ilişkili web'e bazı dönüşümler ekledim. {Configname} .config.

Bir derleme oluşturdum ve Projemde Yapılandır - Yapılandırılacak Yapılandırmaları Oluştur öğelerini oluşturdum. Sadece Debug ve Release olduğunu fark ettim, yarattığım konfigürasyonlardan hiçbiri yoktu. (Yan soru: Bu doğru mu, yoksa oluşturduğum tüm yapılandırmaları göstermeli mi?)

Böylece bir derleme çalıştırıyorum ve çıktı klasörünü kontrol ediyorum ve web.config dönüştürmeleri uygulamadı. Yapmam gereken başka bir şey var mı?

cevap

2

Yapılandırmanın adını "Oluşturulacak Öğeler - Yapılandırılacak Yapılandırmalar" listesinde yazabilirsiniz. Bu işe yaramazsa

MSBuild argüman şu eklemeyi deneyin:/p: true TransformConfigFiles = (3. Gelişmiş -> MSBuild Argümanlar)

37

Sadece atma/p: TransformConfigFiles = true orada olmayacak Aslında bir şey yap. http://blog.degree.no/2012/03/automatic-config-transformations/

+0

Works MsBuild int! Ve kudos, kod örneğiniz bile bu blog yazımındaki yazım hatalarını düzeltir (bu iki yerde bir çıkış yapar). – Abacus

+1

Bu satırları derleme sırasında csproj dosyasına ekledikten sonra bir hata aldım: '' TransformXml 'görevi bulunamadı.' Birisi aynı olacaksa, bunu bu hedefe önce ekleyebilirsiniz Vitalii

+0

harika, bu benim için çalıştı (VS2015, TFS2015)! Çok teşekkürler! Ancak, yapı yapılandırmasını belirtmenin sadece yeterli olmadığı çok garip. MS bazen garip uygulamalar yapıyor ... – Vladislav

1

Sağ, özellikleri gidin çözüm dosyasını tıklayın yapılandırma özelliklerini tuşa tıklayın ve yapılandırma: Bu benim kaynağıdır

<Target Name="TransformConfigFiles" AfterTargets="AfterBuild" Condition="'$(TransformConfigFiles)'=='true'"> 
    <ItemGroup> 
     <DeleteAfterBuild Include="$(WebProjectOutputDir)\Web.*.config" /> 
    </ItemGroup> 
    <TransformXml Source="Web.config" Transform="$(ProjectConfigTransformFileName)" Destination="$(WebProjectOutputDir)\Web.config" /> 
    <Delete Files="@(DeleteAfterBuild)" /> 
</Target> 

:

Ayrıca proje dosyasına bu hedefi eklemek gerekir Üst yönetici. Farklı ortamlar için yapılandırmanızın doğru şekilde ayarlandığından emin olun. doğru şekilde ayarlanmamışsa, doğru şekilde ayarlayın ve kodu kontrol edin. Şimdi derleme şablonunuza gidin ve işlem sekmesinde mülk oluşturmak için yapılandırmayı kontrol edin, farklı konfigürasyonlarınızı görebilmeniz gerekir. Yapılandırma zaten uygun şekilde ayarlanmışsa, yeni yapılandırma adını yapı özelliğine yazarak da ekleyebilirsiniz.

Not: Ayrıca, web.config dönüşüm dosyanızı sağ tıklayıp önizleme dönüşümü seçebilir ve dönüştürme yapılandırmasının düzgün çalıştığından emin olabilirsiniz. Düzgün çalışıp çalışmadığını da yayınlamak profil adı verebilir

, o benim için argümanlar bölüm

/p:DebugSymbols=false;DebugType=None;DeployOnBuild=true;PublishProfile=Stage