سؤال

أرغب في الحصول على Web.Config Transformations تعمل محليًا ولكن يبدو أن التحولات تحدث فقط عند إجراء عمليات النشر.

هل يعرف أي شخص طريقة لتشغيل هدف MSBUILD "TransformWebConfig" دون أن يمر عبر عملية "إعادة البناء" وأيضًا تحديد وإخراج دليل مكان إخراج الويب المحول؟

تعديل: باستخدام إجابة Sayed ، قمت بإنشاء أ .bat ملف للقيام بتشغيل المهمة بالنسبة لي:

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" عبارة عن نسخة من Sayed's Code Snippet في الإجابة أدناه. فقط حدد المصدر والهدف والوجهة للتحول. الملف الجديد ، في هذه الحالة ، سيكون "web.config" المحول في دليل "D: Demo". أنا ببساطة أقوم بنسخه إلى الكتابة فوق الويب الخاصة بمشروعي.

أيضًا ، قمت بإنشاء ماكرو لتشغيل ملف الدُفعات هذا وأداء معلومات tranformation:

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

يمكنك أيضًا إضافة زر على شريط الأدوات لتشغيل هذه الدفعة و/أو تعيين مفتاح اختصار للتنفيذ.

هل كانت مفيدة؟

المحلول

إذا كنت ترغب في تحويل ملف التكوين دون استخدام خط أنابيب نشر الويب ، فأنت فقط تستخدم مهمة TransformXML يدويًا. لقد كتبت منشور مدونة مفصل على هذا في http://sedodream.com/2010/04/26/ConfigTransformationsoutsideofWebAppBuilds.aspx, ، ولكن ها هي الأضواء العالية:

<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>

هنا أقوم بتحويل ملف App.Config يدويًا باستخدام ملف transform.xml وملف الوجهة هو app.prod.config.

شيء واحد ذكرته هو القدرة على القيام بالتحول محليًا عند تشغيل التطبيق. السبب وراء قيامنا بإجراء التحويل فقط على الحزمة/النشر هو أنه إذا قمنا بتحويل Web.Config نفسه ، في المرة القادمة التي تصحح فيها تطبيقك ، يتم تحويل Web.Config مرة أخرى. على سبيل المثال ، إذا كان لديك في الويب. لذلك من الأفضل تجنب ذلك.

نصائح أخرى

إذا كنت تستخدم Visual Studio 2015 ، فيمكنك فقط النقر بزر الماوس الأيمن على تحويل البيئة المطلوبة ، والنقر فوق "عرض معاينة" ... سيقوم بعد ذلك بإنشاء التحويل ، ويمكنك نسخه ولصقه في web.config العادية ملف لأغراض تصحيح الأخطاء. فقط لا ترتكبها!

إذا كنت تستخدم Visual Studio 2013 ، يمكنك تثبيت امتداد Slowcheetah - XML

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top