Albacore Nuspecタスクはすべての依存関係を自動的に解決できますか?

StackOverflow https://stackoverflow.com//questions/9619053

  •  09-12-2019
  •  | 
  •  

質問

Albacore Nuspecタスクは、解決策に必要なすべての依存関係を解決できますか?依存関係を変更していくつかのプロジェクトがある場合は、rakefileを最新の状態に保つために多くの努力が必要です。これは自動化されていますか?

desc 'create the nuget package'
nuspec do |nuspec|
   nuspec.id = 'myprojectid'
   nuspec.version = '1.2.3'
   nuspec.authors = 'Jon Jones'
   nuspec.description = 'my-project is a collection of utilties'
   nuspec.title = 'my-project'
   nuspec.dependency <magic here>
end
.

手動解決策は、パッケージファイルを通過して手で解決することです。誰かが自動化されたものを書きましたか?

役に立ちましたか?

解決

私はこれが古い質問であることを理解していますが、それが答えを持っていないように見て、これは誰かが同じことを探しているのを助けるかもしれません。私は現在、従来の/自律的な方法でjuspecファイルの作成をさらに自動化するためにいくつかのRakeタスクに取り組んでいるので、最終的な解決策でこの投稿を更新します。

手の中の質問に答えるために、ここに、解決策の特定のプロジェクトのPackages.configファイルから依存関係を引き出す小さなRuby関数があります。

def GetProjectDependencies(project)
    path = "#{File::dirname project.FilePath}/packages.config"
    packageDep = Array.new

    if File.exists? path
        packageConfigXml = File.read("#{File::dirname project.FilePath}/packages.config")
        doc = REXML::Document.new(packageConfigXml)
        doc.elements.each("packages/package") do |package|
            dep = Dependency.new
            dep.Name = package.attributes["id"]
            dep.Version = package.attributes["version"]
            packageDep << dep
        end
    end

    packageDep
end
.

と使用される依存クラス:

class Dependency
    attr_accessor :Name, :Version

    def new(name, version)
        @Name = name
        @Version = version
    end
end
.

このメソッドは「Project」インスタンスを取り、そのプロジェクトのpackage.configファイルからの依存/バージョンをつかみます。

私が言ったように、私はすぐにより完全な解決策を投稿しますが、これは彼らがそれを必要とするなら誰にとっても良い出発点です。

編集:申し訳ありませんが、これの最終版を投稿するにはここに連れて行きましたが、ここにいくつかのプロジェクトを使用しているサンプルコードを含むGISTへのリンクがあります。

https://gist.github.com/4151627

基本的には、データを「プロジェクト」クラスに折り返し、Package.configからの依存関係を入力します。ボーナスとして、Interprojectの参照からの依存関係も追加されます(プロジェクトファイルを解析)。クラス/ロジックはそこにあり、サンプルナスピックタスクはあります。

他のヒント

確かに、Albacoreプロジェクトには今のところ何もありません。Mitchellのソリューションを調整して転がっているのを見るのは面白いでしょう。コードをに移動するつもりです。/ a>、 " issue "(機能拡張)を開き、側:)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top