.NET 프로젝트의 AssemblyInfo.cs 파일에 레이크 스크립트로 태그를 지정하고 있지만 컴파일이 중단되는 팬텀 캐리지 리턴 (또는 개행 등)이 있습니다. 버전 번호를 얻는 방법은 다음과 같습니다.이 개조는 어디에서 오는 것입니까?
def get_version()
version = ''
IO.popen("#{SVNVERSION_APPLICATION} #{build_info.root_dir}") do |output|
output.readlines.each do |line|
version << line.gsub(/\:.*/, '')
end
end
result = version
end
더 좋은 방법이 있다면 알려주세요. 나는 거의 여기에서 땜질하고있다. (그리고 이것은 실제로 내가 해왔 던 첫 번째 루비이다. 당신이 볼 수 있듯이 (그리고 내 정규 표현식 기술은 실제로 닌자 레벨이 아니 었습니다.) 저는 첫 번째 콜론과 그 이후의 모든 것을 제거하려고합니다. Svnversion은 "64:67M
"과 같은 것을 반환하며 첫 번째 숫자에만 관심이 있습니다.
contents = contents.gsub(/AssemblyVersion\(\"([\d.*]*)\"\)/, "AssemblyVersion(\"#{helper.build_info.build_number_template}\")")
는 물론, 이러한 비트를 둘러싼 많은 코드가있다. 이것은 무슨 일이 벌어지고있는 것일뿐입니다. 기본적으로 get_version을 호출하여 도우미 객체에 버전 번호를 저장하고 나중에 해당 객체를 AssemblyInfo.cs 파일을 "내용"으로 읽은 다음 대체를 수행하여 다시 작성하는 메서드에서 사용합니다.
모든 출력에서 팬텀 줄 바꿈을 제외하고 잘 작동한다 : 나는 행운에 \ n과 \ r을 필터링합니다 다른 .gsub를 추가하려고했습니다
[assembly: AssemblyVersion("1.1.0.62
")]
[assembly: AssemblyFileVersion("1.1.0.62
")]
, 나는 시도했다 .chomp, 등등. 항상 결과 파일에 새줄을 넣는 것처럼 보입니다.
나는 분명한 뭔가를 놓치고 있습니까?
[편집 제 않음에 응답하여 :]
여기 AssemblyInfo.cs 파일 편집있어서 puts
라인 AssemblyVersion("1.1.0.62")
출력하지만, 결과 파일 AssemblyVersion("1.1.0.>")
def replace_assembly_strings(file_path, helper)
if not (File.exists?(file_path) || File.writable?(file_path))
raise "the file_path \"#{file_path}\" can not be written to. Does it exist?"
end
path = Pathname.new(file_path)
contents = path.read
puts "AssemblyVersion(\"#{helper.build_info.build_number_template}\")"
contents = contents.gsub(/AssemblyVersion\(\"([\d.*]*)\"\)/, "AssemblyVersion(\"#{helper.build_info.build_number_template}\")")
contents = contents.gsub(/AssemblyFileVersion\(\"([\d.*]*)\"\)/, "AssemblyFileVersion(\"#{helper.build_info.build_number_template}\")")
contents = contents.gsub(/AssemblyCompany\(\"(.*)\"\)/, "AssemblyCompany(\"#{helper.build_info.company}\")")
contents = contents.gsub(/AssemblyCopyright\(\"(.*)\"\)/, "AssemblyCopyright(\"#{helper.build_info.copyright}\")")
File.open(file_path, 'w') {|f| f.write(contents)}
end
그
당신이 어떤 의견/질문이 있으면 알려주세요, 그리고 더 루비 모험과 행운, 그것은 helper.build_info.build_number_template' 당신에게 처음으로 다른 결과를주고있다 '처럼 보인다 그리고 두 번째로 당신이 그것을 부르면. 이 코드를 디버깅하는 것이 좋습니다. 다음은 디버거를 설정하고 사용하는 링크입니다. http://pivotallabs.com/users/chad/blog/articles/366-ruby-debug-in-30-seconds-we-don-t-need-no- stinkin-gui- 또한 오래된 학교에 다니고 인쇄 문구를 계속 사용할 수 있습니다 (사실, 학교에서 아직도 가르치고있는 내용입니다). 그런 경우 puts 문을 여러 번 반복하면 어떻게됩니까? 또는 p 내용을 gsub 전후에? –
이유가 무엇이든, 오늘 아침에 작동합니다. 내가 포함 파일을 편집 한 후에도 rake 명령에서 동일한 결과를 반환하는 내 Windows 명령 프롬프트에서 이상한 캐싱이 발생했는지 궁금합니다. 오 잘, 어느 쪽의 방법이라도 지금 일한다. 도와 주셔서 감사합니다! – David