Albacore Nuspecタスクはすべての依存関係を自動的に解決できますか?
質問
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へのリンクがあります。
他のヒント
確かに、Albacoreプロジェクトには今のところ何もありません。Mitchellのソリューションを調整して転がっているのを見るのは面白いでしょう。コードをに移動するつもりです。/ a>、 " issue "(機能拡張)を開き、側:)