2017-10-23 4 views
1

サービスファブリックアプリケーションでconfig.xmlファイルを変換しようとしています。私が直面している問題は、ソースxmlのルート要素に名前空間があることです。変換後に保持する必要があります。 msbuildのTransformXmlタスクは、ソースxmlのルート要素に名前空間がない場合にのみ機能します。MSBuildを使用してService Fabric Configまたはルート要素の名前空間にXMLファイルを変換します

SOURCEのXML

<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      Name="SomeName" 
      xmlns="http://schemas.microsoft.com/2011/01/fabric"> 
    <Parameters> 
    <Parameter Name="Key" Value="Default" /> 
    </Parameters> 
</Application> 

私は実行すると

<?xml version="1.0" encoding="utf-8" ?> 
<Application Name="ApplicationName"    
      xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" 
      xdt:Transform="SetAttributes(Name)"> 
    <Parameters> 
    <Parameter Name="Key" Value="TransformedValue" xdt:Locator="Match(Name)" xdt:Transform="SetAttributes(Value)"/>  
    </Parameters> 
</Application> 

期待される出力

<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      Name="ApplicationName" 
      xmlns="http://schemas.microsoft.com/2011/01/fabric"> 
    <Parameters> 
    <Parameter Name="Key" Value="TransformedValue" /> 
    </Parameters> 
</Application> 

FILEをTRANSFORM TransformXmlタスクを使用してこの変換を行います。私は警告としてこれを取得し、私は期待される出力を得ていない。

no element in the source document matches /Application 

誰かがこの前にこれをしたことを願っています。何か案は ?あなたは、デプロイメント時にコンフィグ設定を上書きするサービスファブリック内のパラメータ・ファイルを使用することができます

おかげ

+0

なぜトークンタスクを置き換える使わないのでしょうか? – Mardoxx

+0

@Mardoxx 'トークン置換タスク'とは何ですか?私はmsbuild.exeを使ってプロジェクトをビルドしています。あなたはビジュアルスタジオオンラインビルドサーバーについて話しているかもしれません。私は特に、開発者マシンでもビルド/トランスフォームする必要があります。 – Gurpreet

答えて

0
+0

私はこれがデフォルトでどのように行われているのか理解していますが、私が解決しようとしている問題は、環境ごとにxmlファイルを追加することはできますが、新しいパラメータをマニフェストファイルに追加して、パラメータを他のすべてのファイル(fst、uat、prodなど)に追加する必要があります。その理由は、変更する必要がある値を変換することによって他のすべてのファイルを作成したいからです。第二に、私はこの問題がルート要素に名前空間を持っているすべての設定ファイルに対して一般的であることがわかります。 – Gurpreet

+0

質問のタイトルを変更し、msbuildでタグ付けすることをお勧めします。 –

関連する問題