Albacore NUSPEC 작업은 모든 종속성을 자동으로 해석 할 수 있습니까?
문제
Albacore NoSpec 작업은 해결 방법에 필요한 모든 종속성을 해결할 수 있습니까?변화하는 종속성이있는 여러 프로젝트가있을 때 레이크 파일을 최신 상태로 유지하기 위해 많은 노력이 필요합니다.이것은 자동화 될 수 있습니까?
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
.
수동 솔루션은 패키지 파일을 통과하고이를 손으로 해결하는 것입니다.누군가가 자동화 된 것을 작성한 사람이 있습니까?
해결책
이것은 이것이 오래된 질문이라는 것을 알고 있지만 답변이 없기 때문에 똑같은 것을 찾는 데 도움이 될 것입니다. 현재 NoSpec 파일을 기존 / 자율적 인 방식으로 자동화하기 위해 Rake 작업을 더욱 연구하고 있으므로 나중에 최종 솔루션 으로이 게시물을 업데이트 할 것입니다.
손에 질문에 대답하기 위해서는 여기에 솔루션의 주어진 프로젝트에 대한 Packages.config 파일에서 의존성을 가져올 수있는 작은 루비 기능이 있습니다.
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
.
이 메소드는 "프로젝트"인스턴스를 취하고 해당 프로젝트의 package.config 파일에서 종속성 / 버전을 잡습니다.
내가 말했듯이, 곧 더 완전한 해결책을 게시 할 것이지만, 이것은 누구에게나 필요하다면 좋은 출발점입니다.
편집 : 이 모든 버전을 게시하기가 너무 오래 걸리지 만 현재 많은 프로젝트에 대해 사용하고있는 샘플 코드가 들어있는 GIST에 대한 링크가 있습니다.
https://gist.github.com/4151627
기본적으로 데이터를 "프로젝트"클래스로 래핑하고 package.config에서 종속성을 채 웁니다. 보너스로서, 그것은 또한 인토 투입 참조에서 종속성을 추가합니다 (프로젝트 파일 구문 분석). 클래스 / 논리는 샘플 nuspec 태스크뿐만 아니라
다른 팁
확실히 지금, 지금 당장 그렇게하는 albacore 프로젝트에 아무 것도 없습니다.Mitchell의 솔루션이 조정 된 것으로 보이는 것은 흥미로울 것입니다. Gist ""(향상)를 엽니 다.측면 :)