2009-04-15 2 views
2

빌드 할 때마다 내 응용 프로그램의 베타 버전을 게시하려고하므로 일반 릴리스 전에 "베타"버전에 액세스하고 기능을 테스트 할 수 있습니다.ClickOnce 응용 프로그램의 베타 버전을 게시하는 방법은 무엇입니까?

ProductName을 [product] -beta로 실행하는 동안 ProductName을 재정 의하여이 작업을 시도했습니다. 문제는 게시 프로세스가 여전히 [제품] 응용 프로그램을 만드는 것이고 ClickOnce 마법은 [제품] 응용 프로그램 하나의 URL과 [제품] 응용 프로그램의 다른 응용 프로그램 사이의 차이를 알지 못하는 것 같습니다.

내가이 문제를 어떻게 극복 할 수 있을지에 대한 아이디어가 있습니까?

답변

4

매우 비슷한 문제가 발생했습니다. 여기에 제가 생각해 낸 해결책이 있습니다.

모든 GUI 양식을 기본 시작 양식을 포함한 DLL에 넣었습니다. 그런 다음 내 GUI dll을 참조하는 2 개의 EXE 프로젝트를 만들었습니다. 하나는 Product라는 이름이고 다른 하나는 ProductBeta입니다.
EXE의 코드는 거의 동일합니다. 즉 Application.Run (새 MainForm())입니다.

그런 다음 같은 공유에있는 하위 디렉터리에 게시하도록 설정합니다.

짜증나고 약간의 오버 헤드가 있지만 결과는 매우 잘 작동합니다.

1

발견 한대로 제품 이름을 수정하는 것으로 충분하지 않습니다. 어셈블리 이름을 수정해야합니다. http://weblogs.asp.net/sweinstein/archive/2008/08/24/top-5-secrets-of-net-desktop-deployment-wizards.aspx

에서

정보는 가장 중요한 것은 여러 환경에 대한 지원 데 -이 내장되지 않은 을, 그리고 두 개의 서로 다른 에서 ClickOnce 배포를 시도는 같은 배포를 구축하는 경우 이름이 다른 사이트에있는 경우 최신 빌드가 우선적으로 적용되어 이며 기존 배포를 데스크톱에서 효과적으로 덮어 씁니다.

이에 대한 수정은 상대적으로 간단합니다 - 각 빌드 다른 배치 이름을 제공해야합니다. 그래서처럼 -

<MSBuild 
    Projects="ClickOnce.csproj" 
    Targets="Publish" 
    Properties=" 
      MinimumRequiredVersion=$(MinimumRequiredVersion); 
      ApplicationVersion=$(ApplicationVersion); 
      ApplicationRevision=$(ApplicationRevision); 
      CodeBranch=$(CodeBranch); 
      DeployEnv=$(DeployEnv) 
      AssemblyName=ClickOnce.$(DeployEnv); 
      PublishUrl=$(PublishUrl); 
      ProductName=ClickOnce $(CodeBranch) $(DeployEnv)" /> 

이 방법의 한 가지 제한이 참조가 더 이상 작업을 투사하지 그 입니다. 파일 기반 어셈블리 참조 인 을 사용하면 문제가 없습니다.