34

Web.config dönüşümlerini yerel olarak çalışmak istiyorum ancak görünüşe göre dönüştürmeler yalnızca dağıtımlarda gerçekleşiyor.Web.config dönüşümleri yerel olarak çalışır hale getirin

"Yeniden oluşturma" işlemine gerek kalmadan "TransformWebConfig" msbuild hedefini çalıştırmanın ve dönüştürülmüş web.config öğesinin tükendiği yeri belirtip çıkış dizinini bilen biri var mı?

DÜZENLEME: Sayed yanıtını kullanarak, benim için görevi çalıştırmak yapmak için bir .bat dosyası oluşturduk:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Msbuild.exe "D:\Demo\Transformation.proj" /t:TransformWebConfig 

copy /Y "D:\Demo\Web.config" "D:\MyProject\Web.config" 

del ""D:\Demo\Web.config" 

"Transformation.proj" aşağıda cevap Sayed en Kod parçası bir kopyasıdır. Sadece dönüşüm için kaynağı, hedefi ve hedefi belirtin. Yeni dosya, bu durumda, dönüştürülmüş "web.config", "D: \ Demo" dizininde olacaktır. Projemin web.config dosyasının üzerine yazmak ve son olarak oluşturulan dosyayı "demo" klasöründe silmek için kopyalarım.

Ayrıca benim yarattığım bu toplu dosyasını çalıştırın ve benim için tranformation gerçekleştirmek için bir makro:

Public Module DoTransform 
    Sub RunTransformBatchFile() 
     Try 
      Process.Start("D:\Demo\RunTransform.bat") 
     Catch ex As System.Exception 
      MsgBox(ex.Message) 
     End Try 
    End Sub 
End Module 

Ayrıca bu toplu çalıştırmak için araç çubuğunda bir düğme ekleyebilir ve/veya bir kısayol tuşu atama yürütün. Web Yayımlama Boru Hattı'nı kullanmadan bir yapılandırma dosyasını dönüştürmek istiyorsanız, TransformXml görevini el ile kullanıyorsanız

cevap

34

Ben http://sedodream.com/2010/04/26/ConfigTransformationsOutsideOfWebAppBuilds.aspx de bu konuda detaylı bir blog yazısı yazılı, ama burada olan yüksek ışıklar ettik: Burada

<Project ToolsVersion="4.0" DefaultTargets="Demo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <UsingTask TaskName="TransformXml" 
      AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/> 

    <Target Name="Demo"> 
     <TransformXml Source="app.config" 
         Transform="Transform.xml" 
         Destination="app.prod.config"/> 
    </Target> 
</Project> 

el transform.xml dosyasını kullanarak app.config dosyasını dönüştürmek ve hedef dosya app.prod olduğunu. yapılandırma.

Belirtdiğiniz bir şey, uygulamayı çalıştırırken yerel olarak dönüşüm gerçekleştirebilmekti. Paketleme/yayınlamada yalnızca dönüşümü gerçekleştirmemizin nedeni, web.config'i kendi başımıza dönüştürdüğümüzden, web.config uygulamasının bir dahaki sefere hata ayıklanmasını bir dahaki sefere değiştirdiğimiz içindir. Örnegin, web.debug.config dosyasinda yapilandirmaniz için bir deger eklemek üzere degisiminiz varsa, bunu eklediginiz her seferinde her şey tamamidir, ancak bir sonraki sefer uygulamaniz/hata ayıklama uygulamaniz tekrar eklenir. Bundan kaçınmak en iyisi.

+0

dönüştürür. çok teşekkürler Sayed! –

+0

Sayed, bu cevabı başka bir soruyla bilebilir miydiniz? http://stackoverflow.com/questions/2915329/advanced-tasks-using-web-config-transformation –

+0

Evet bunu biliyorum, sadece cevapladım. –

2

Visual Studio 2015 kullanıyorsanız, istediğiniz ortamın dönüştürmesini sağ tıklayıp "Önizlemeyi Görüntüle" yi tıklayabilirsiniz ... Daha sonra dönüştürmeyi oluşturacak ve bunu kopyalayıp yapıştırabilirsiniz. hata ayıklama amaçları için normal Web.config dosyası. Sadece bunu yapma! Visual Studio 2013 kullanıyorsanız

, sen SlowCheetah yükleyebilirsiniz - XML ​​Bu benim, gerekli yapı olmadan web.config dönüşümü tam olarak nedir uzantıyı

İlgili konular