2012-05-07 4 views
5

ClickOnce 배포를 사용하는 Outlook 추가 기능이 있습니다.ClickOnce 배포 MSBuild -> 응용 프로그램 버전/자동 증가에 대한 현재 빌드 번호 전달 방법

개발자가 빌드를 체크 인하면 PC가 빌드를 대기열에두고 응용 프로그램이 공유 드라이브의 위치에 게시됩니다.

문제는 빌드 버전이 게시 버전을 현재 어셈블리 버전으로 변경하지 않기 때문에 이전 버전 폴더에 게시되므로 버전을 설치할 수 없다는 설치 관리자가 손상됩니다.

나는 that article을 읽었습니다. 그리고 Assembly : AssemblyVersion ("1.0. *")]을 설정합니다. 아직 아무것도.

* .csproj 파일의 <ApplicationVersion></ApplicationVersion>을 증가시켜이 문제를 해결할 수있는 방법을 찾았습니다. 그러나 나는 그것이 자동화되기를 원한다.

/target:publish /property:PublishDir="\\sharedDir\\" /property:GenerateManifests=true 
/property:ApplicationVersion=1.0.0.123 

을 그리고 여전히 자동화되지 않습니다 MSBuild.exe를 실행할 때

다른 해결 방법

이었다. msbuild.exe 또는 모든 빌드에서 현재 빌드 번호를 <ApplicationVersion></ApplicationVersion>에있는 값을 실제 빌드 번호로 바꿉니다. 아니면 다른 방법이 있습니까?

+0

어떤 빌드 서버를 사용하고 있습니까? 크루즈 컨트롤? 젠킨스/허드슨? TFS? –

+0

빌드 서버는 TFS입니다. –

+0

내 자신의 실험에 따르면 * .csproj 파일의 값을 증가시키는 것이 ClickOnce 응용 프로그램을 완전히 자동화하는 가장 정확하고 쉬운 방법이라고 생각합니다. 그렇게 함으로서 매니페스트는 정확해진다. /t:ApplicationVersion=a.b.c.d를 단순히 전달하면 응용 프로그램 매니페스트가 제대로 다시 작성되지 않습니다. 문자열 교체를 통해 * .csproj 파일에서 해당 값의 증가분을 자동화 한 다음/t : ApplicationVersion 값없이 MSBuild를 실행하면 모든 것이 잘됩니다. 나는 이것을하고 자동 업데이트는 훌륭하게 작동한다. –

답변

0

저는 빌드 서버로 Hudson을 사용하고 빌드를 수행하려면 MSBuild을 사용합니다. Hudson은 빌드 번호로 환경 변수를 설정합니다. 그런 다음 환경 변수를 명령 줄 인수로 전달하여 assemlyinfo.cs 파일을 구문 분석하고 어셈블리 버전, 파일 버전 및 어셈블리 정보 버전을 업데이트합니다.

다른 방법은 실행 파일 대신이 작업을 수행하는 사용자 지정 작업을 만드는 것입니다 (이제는 inline tasks을 지원하기 때문에 더 쉽습니다). TFS의 이전 버전은이 enviornment 변수를 설정 비슷한 일을했다,하지만 TFS에서 그와 함께 당신을 도울 수 2010

다음

있는 자원이 변경되었을 수 있습니다 :

또한, 우리는 ClickOnce 응용 프로그램 및 배포 매니페스트를 만들 Mage 명령 줄을 사용하고 있습니다. MSBuild 프로젝트에서 Mage를 Exec 작업으로 부릅니다.

5

내가 여기에있는 것과 같은 문제가 발생했습니다. 내가 당신의 질문에서 코드를 사용하여 해결할 수있었습니다. 다음은 TFS를 사용하여 해결할 단계입니다.

빌드 템플릿을 열고 워크 플로 아래쪽에있는 인수 탭을 엽니 다. MSBuildArguments를 찾고 기본값을 수정하십시오.물론

// Note: You can use /p for /property and /t for /target 

"/t:Publish /p:PublishDir=<PublishDirectory> /p:ApplicationVersion=" 
    + Date.Today.ToString("yyyy") + "." 
    + Date.Today.ToString("MMdd") + "." 
    + Date.Now.Hour.ToString() + "." 
    + Date.Now.Minute.ToString() 

이제 저장하고 체크인하는 새 빌드 파일이 필요합니다 아래는 내가 함께 끝난 것입니다. 새 값을 사용하도록 빌드 정의를 가져 오는 데 문제가있어서 새로운 빌드 정의를 만들었습니다. 같은 새로운 응용 프로그램 폴더 생성됩니다

:이 이전 게시물에 대한 새로운 해답을 알고, 그래서 당신은 다른 해결책을 발견했는지,하지만 난 희망

<ApplicationName>_2013_0315_09_55 

을이 사람을 도움 TFS와 함께 ClickOnce 배포를 사용하려는 사용자.

관련 문제