AssemblyInfo.cs 파일 버전과 일치하도록 ClickOnce 게시 버전을 얻으려면 어떻게 해야 합니까?

StackOverflow https://stackoverflow.com/questions/44470

문제

애플리케이션을 게시할 때마다 ClickOnce 개정 번호를 하나씩 업데이트하도록 했습니다.AssemblyInfo.cs 파일의 버전 번호를 변경하기 위해 자동으로 이 변경 사항을 가져오는 방법이 있습니까(모든 오류 보고는 어셈블리 버전을 참조함)?

도움이 되었습니까?

해결책

Team Foundation Server 팀 빌드를 사용하고 TFSBuild.proj에 블록을 추가했습니다. AfterCompile 기본 버전 번호로 ClickOnce 게시를 트리거하는 대상:

<MSBuild Projects="$(SolutionRoot)\MyProject\Myproject.csproj"
         Properties="PublishDir=$(OutDir)\myProjectPublish\;
                     ApplicationVersion=$(PublishApplicationVersion);
                     Configuration=$(Configuration);Platform=$(Platform)"
         Targets="Publish" />

그만큼 PublishApplicationVersion 변수는 TFS 변경 집합 번호를 사용하기 위해 사용자 지정 MSBuild 작업에 의해 생성되지만 다음을 사용할 수 있습니다. 나만의 맞춤 작업 또는 기존 솔루션 AssemblyInfo 파일에서 버전 번호를 가져옵니다.

이론적으로는 프로젝트 파일(어차피 MSBuild 스크립트일 뿐임)에서 이 작업을 수행할 수 있지만 개발자 컴퓨터에서 배포하는 것은 권장하지 않습니다.

다른 건 확실해 지속적인 통합 (CI) 솔루션은 이를 유사하게 처리할 수 있습니다.


편집하다: 죄송합니다. 질문을 거꾸로 하셨습니다.ClickOnce 버전 번호에서 AssemblyInfo 파일로 이동하는 것이 가능해야 합니다.MSBuild 커뮤니티 작업(위 링크)에는 AssemblyInfo 파일을 업데이트하는 작업이 있으므로 ClickOnce 구성 XML에서 버전 번호를 가져오려면 사용자 지정 작업만 있으면 됩니다.

그러나 ClickOnce 게시 버전도 포함하도록 오류 보고를 변경하는 것을 고려할 수도 있습니다.

if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{
    Debug.WriteLine(System.Deployment.Application.ApplicationDeployment.
                                                        CurrentDeployment.CurrentVersion);
}

다른 팁

최근에 일부 사용자 지정 작업을 사용하여 이를 구현했습니다.ClickOnce를 사용하여 이를 구현하면서 발견한 문제는 모든 DLL 파일이 업데이트된다는 것입니다.이로 인해 ClickOnce 업데이트는 업데이트할 때마다 모든 응용 프로그램 파일을 다운로드합니다.이는 수정된 파일만 업데이트에서 다시 다운로드되는 ClickOnce 배포의 유용한 기능을 우회합니다.

ClickOnce를 사용하여 이와 같은 기능을 구현할 때 고려해야 할 사항입니다.

단계:

  1. 외부 증분 버전 번호를 사용합니다(CruiseControl.NET과 같은 연속 통합 서버를 활용하는 경우 빌드 라벨에서 나옵니다).
  2. GlobalVersionInfo.cs(솔루션의 모든 프로젝트에서 참조되는 파일 링크)를 사용하여 현재 버전을 유지하고 빌드 시 AssemblyInfo 작업으로 업데이트합니다. MSBuild 커뮤니티 작업.
  3. 스크립트 마술사 .NET SDK의 명령줄 도구를 사용하여 동일한 버전을 사용하여 ClickOnce 매니페스트를 업데이트합니다(참조: -v 그리고 -mv 스위치).

그런데 좋은 보너스는 통합 스크립트를 통해 최신 ClickOnce 배포 버전을 자동으로 게시할 때마다 mage.exe에 최소 버전(버전과 동일)을 지정하면 모든 사용자가 다음 응용 프로그램에서 자동으로 업데이트된다는 것입니다. 시작하다.

.csproj 파일에 저장된 버전 번호에 따라 AssemblyInfo.cs를 업데이트하는 코드 조각을 만들어야 할 수도 있습니다.(ClickOnce 배포 버전은 XML 태그 내에 저장됩니다.)

그런 다음 Publish|Release 빌드가 수행될 때 이 코드 비트를 실행하도록 .csproj 파일을 변경합니다.MSBuild 사람들은 특정 빌드 유형 중에 사용자 지정 작업을 수행하는 방법에 대해 블로그를 작성했습니다.~을 체크 해봐 MSBuild 팀 블로그.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top