1

ビルド環境を NAnt から Rake に移行しています。一部の NAnt タスクは書き直す必要があります。この場合、XmlPoke タスク(NAntContrib ライブラリの一部) です。Ruby では、これは非常に簡単に作成できます。

4

2 に答える 2

1

私はあなたが尋ねていると思っていた質問に答えるつもりです: アセンブリのバージョン番号を更新する方法. しかし、あなたの回答から、一般的な XML 更新 (XML poke タスクのコピー) に関心があることがわかります。

Ruby/Rake/Albacore を使用してアセンブリ バージョンを更新する方法は?

.NET プロジェクトに対する私の推奨事項は、アセンブリ情報ファイルのバージョンを常に更新することです。を直接編集するのではなく、csproj. Albacore にはそれを行うためのメソッドが含まれており、AssemblyInfo Taskを使用します。

NAnt xmlpoke タスクを再作成するには?

実際に、Albacore のカスタム タスクのスタイルで.NET 固有のファイル更新タスクをいくつか作成しました。私はそれらを呼び出しましたapprc(おかしなエンコーディングの問題があるCLIリソースファイルを書き直すため)。そしてappconfig、これは実際にどの XML ファイルでも機能します。

情報は readme にありますが、xmlpoke タスクとは少し異なります。

appconfig :taskname do |x|
  x.files = FileList['relative/wildcard/path/to/*.exe.config']
  x.replacements = {
    'some/x/path/expression' => 'replacment-value',
    'another/x/path/expression' => 'another-replacment!'
  }
end
于 2013-03-15T17:38:35.913 に答える
0
    require 'albacore/tasks/versionizer'
    require 'semver'
    require 'rexml/document'
    include REXML

    Albacore::Tasks::Versionizer.new(:versioning)

    ver = SemVer.find
    ASSEMBLY_VERSION = "#{ SemVer.new(ver.major, ver.minor, ver.patch).format "%M.%m.%p"}" + ".0"

    class XmlPoke
      attr_accessor :xml_file_path
      def initialize xmlfilepath
        @xml_file_path = xmlfilepath
      end
      def pokeelement xpath, value
        file = File.open(xml_file_path, 'r')
        xmldoc = Document.new(file)
        xpathnode = XPath.first(xmldoc, xpath)
        xpathnode.text = value
        formatter = REXML::Formatters::Default.new
        File.open(xml_file_path, 'w') do |result|
          formatter.write(xmldoc, result)
        end
      end
    end

    desc "Sets Application Version in project file"
    task :outlookproj do
      projectfilepath = "dotnet_project_path/dotnet_project_name.csproj"
      xpath = "/Project/PropertyGroup/ApplicationVersion"
      value = "#{ASSEMBLY_VERSION}"
      poker = XmlPoke.new projectfilepath
      poker.pokeelement xpath, value
    end
于 2013-03-08T09:48:43.057 に答える