Web.config変換をローカルで機能させたいのですが、どうやら変換はデプロイメントを行うときにのみ発生します。
「再構築」プロセスを経ずにmsbuildターゲット「TransformWebConfig」を実行し、変換されたweb.configを吐き出すディレクトリを指定して出力する方法を知っている人はいますか?
[〜#〜] edit [〜#〜]: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のコードスニペットのコピーです。変換のソース、ターゲット、および宛先を指定するだけです。新しいファイル、この場合、変換された「web.config」は「D:\ Demo」ディレクトリにあります。プロジェクトのweb.configを上書きするためにコピーし、最後に、「demo」フォルダーに生成されたファイルを削除します。
また、このバッチファイルを実行して変換を実行するマクロを作成しました。
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
ツールバーにボタンを追加して、このバッチを実行したり、実行するショートカットキーを割り当てたりすることもできます。
web Publishing Pipelineを使用せずに構成ファイルを変換する場合は、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>
ここでは、transform.xmlファイルを使用してapp.configファイルを手動で変換し、宛先ファイルはapp.prod.configです。
あなたが言及したことの1つは、アプリの実行時にローカルで変換を実行できることでした。パッケージ/公開でのみ変換を実行する理由は、web.config自体を変換した場合、次にアプリをデバッグするときにweb.configが再び変換されるためです。したがって、たとえば、web.debug.configに値をconfigに追加する変換がある場合、最初にそれを追加するときはすべて問題ありませんが、次にアプリを実行/デバッグするときに再び追加されます。したがって、それを避けるのが最善です。
Visual Studio 2015を使用している場合は、目的の環境の変換を右クリックして、[プレビューの表示]をクリックするだけです。変換が生成され、通常のWeb.configにコピーして貼り付けることができます。デバッグ用のファイル。コミットしないでください!
Visual Studio 2013を使用している場合は、SlowCheetah-XMLTransforms拡張機能をインストールできます。