これは古い質問だと思いますが、答えがないので、同じことを探している人に役立つかもしれません。私は現在、従来の/自律的な方法でnuspecファイルの作成をさらに自動化するために、いくつかの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
そして、使用されるDependencyクラス:
class Dependency
attr_accessor :Name, :Version
def new(name, version)
@Name = name
@Version = version
end
end
このメソッドは「プロジェクト」インスタンスを取り込み、そのプロジェクトのpackage.configファイルから依存関係/バージョンを取得します。
私が言ったように、私はすぐにもっと完全な解決策を投稿します、しかしこれは彼らがそれを必要とするならば誰にとっても良い出発点です。
編集:申し訳ありませんが、これの最終バージョンを投稿するのに非常に時間がかかりましたが、これは私が現在多くのプロジェクトで使用しているサンプルコードを含む要点へのリンクです。
https://gist.github.com/4151627
基本的に、データを「Project」クラスにラップし、package.configから依存関係を設定します。ボーナスとして、プロジェクト間参照からの依存関係も追加します(プロジェクトファイルを解析します)。クラス/ロジックとサンプルのnuspecタスクがあります。