2013-05-22 3 views
0

Visual Studio 2012 대상 .Net 4.5를 사용하여 작성한 웹 응용 프로그램이 있는데 실제로는 솔루션을 빌드하고 압축 한 다음 프로덕션 서버에서 ftp로 수동 배포했습니다.C#에서 부정확하게 DateTime 형식 지정

이 배포를 자동화하기 위해 Jenkins CI를 호스팅하는 빌드 서버가 있습니다.이 도구를 사용하여 MSBuild.exe를 사용하여 소스를 빌드 한 다음 NUnit 테스트를 실행합니다.

로컬로 빌드 스크립트를 실행하면 모든 테스트가 통과되고 올바르게 작동합니다. 그러나 빌드 서버 (Visual Studio가 설치되어 있지 않지만 SDK가 있음)에서 스크립트를 실행하면 빌드가 성공하지만 일부 단위 테스트는 실패합니다.

나는 실패를 조사 해본 결과, 예를 들어 날짜 형식이 작동하지 않는 등의 이상한 문제가 발생하는 것으로 나타났습니다. 내 로컬 컴퓨터에

myRequest.Date = new DateTime(1970, 2, 1) 
... 
myRequest.Date.ToString("dd-MM-yyyy")); 

이 제대로 작동하고 1970년 1월 2일으로 날짜를 포맷합니다. 그러나 빌드 머신에서 날짜가 으로 포맷되어 있기 때문에 테스트가 실패했습니다. 02-01-1970

+1

Windows 영역 설정이 두 시스템에서 동일하다는 것을 확인 했습니까? – paul

+0

잘 모르겠지만 동일한 문제가있어서 web.config에서 Culture as UK를 지정해야했습니다. 두 번째 옵션은 서버에 culture zone을 설정하는 것입니다. – Rab

+0

지역을 변경하려고합니다! – lisburnite

답변

0

명시 적으로 일 - 월 - 일 주문을 지정 했으므로 결과를 얻지 못한다고 생각합니다. 너는 네가지고 있다고 말한다. 예를 들어.

string usDate = date.ToString("dd-MM-yyyy", new CultureInfo("en-US")); 
string deDate = date.ToString("dd-MM-yyyy", new CultureInfo("de-DE")); 
string gbDate = date.ToString("dd-MM-yyyy", new CultureInfo("en-GB")); 

나에게 "화물 숭배 프로그램"의 국가 별 설정 또는 CurrentCulture 난다 변경 : 다음의 문화는 모두 같은 결과, "1970년 1월 2일"를 제공 할 것입니다. 대신 문제를 일으키는 빌드 머신에서 디버깅하고 정확히 무슨 일이 일어나고 있는지 추적 할 것을 제안합니다. 코드에서 잘못된 위치를보고 있지 않습니까?

+0

내 작업은 코드를 건드리지 않고 빌드, 테스트 및 배포 프로세스를 자동화하는 것이 었습니다. 결과적으로 빌드 서버 – lisburnite

+0

@lisburnite의 지역 설정을 업데이트 할 수 있습니다. 요점은 내가 말한 코드 라인이 당신이 말한 결과를 반환하고 있다고 생각하지 않는다는 것입니다. 지역 설정은 효과가 있습니다. 그래서 무슨 일이 일어나고 있는지 디버그하십시오. – Joe

0

빌드 서버의 지역 설정을 내 로컬 컴퓨터와 동일하게 변경해야했습니다.