선택한 빌드 구성에 따라 ClickOnce 설정 변경(.NET Framework 버전에만 해당)

페이지 업데이트 :
페이지 생성 날짜 :

환경

  • 윈도우 폼 (.NET 프레임 워크) 일반적으로
  • WPF (.NET 프레임 워크) 일반적으로

전제

이러한 팁의 내용은 .NET Framework에 대한 프로젝트 가정입니다. .NET(Core)의 경우 빌드 구성 단위에서 ClickOnce 게시 설정을 설정할 수 있으므로 평소와 같이 게시하십시오.

또한 ClickOnce를 정상적으로 사용하기에 충분한 지식이 있다고 가정합니다.

처음에

.NET Framework 프로젝트에는 ClickOnce 게시 설정이 하나만 있을 수 있기 때문에 예를 들어 디버그 빌드와 릴리스 빌드에서 다른 설정으로 게시하려면 게시하기 전에 매번 설정을 수동으로 변경해야 합니다.

프로젝트를 DLL로 그룹화하고 게시를 위해 두 개의 개별 프로젝트를 만들어 두 가지 설정을 가질 수 있습니다. 동일한 구성이 두 번 수행되며 게시에 필요한 리소스 파일이 있는 경우 한 번에 두 개의 리소스 파일이 있어야 하므로 관리가 번거로울 수 있습니다.

이 섹션에서는 .bat 배치 파일)을 필요한 만큼 설정하고 ClickOnce를 게시하는 방법에 대해 설명합니다.

클릭 한 번 구성

이번에는 "공용 폴더 위치"와 "설치 폴더 URL"이 "디버그 빌드"및 "릴리스 빌드"로 분리되었습니다. 다른 설정은 공통으로 만드는 정책을 사용하여 만들어집니다. 다른 매개 변수는 분리될 수 있지만 "응용 프로그램 파일"과 "필수 구성 요소"를 별도로 유지하는 것이 번거로울 수 있습니다.

먼저 프로젝트를 열고 평소와 같이 ClickOnce 설정을 입력하십시오. 입력 내용은 Debug에서 발행 할 매개 변수로 설정되지만 오류가 발생하지 않는 한 공통 부분 이외의 다른 것은 괜찮습니다.

다음은 구성의 예입니다.

입력했으면 프로젝트를 저장합니다.

ClickOnce 게시를 위한 .bat 파일 만들기

명령과 함께 실행되므로 PowerShell과 같은 다른 미디어에서 실행할 수 있지만 이번에는 BAT 파일로 만들어집니다.

어디서나 파일을 만들 수 있지만 단순화를 위해 솔루션 파일 (.sln)의 위치에 파일을 만듭니다. BAT 파일이기 때문에 문자 인코딩은 Shift-JIS입니다. PS1은 UTF-8 (BOM)이 될 수 있습니다.

텍스트 편집기에서 BAT 파일을 열고 다음을 입력합니다. PowerShell은 이스케이프를 다르게 처리할 수 있습니다.

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

첫 번째 줄은 "개발자 명령 프롬프트"의 위치를 가리 킵니다. 이 경로는 설치 중인 Visual Studio 버전에 따라 다릅니다.

경로의 각 부분은 다음 조건에 따라 달라집니다.

프로그램 파일
경로 조건
프로그램 파일
  • 32비트 OS를 사용하는 경우
  • 64비트 OS에서 64비트 버전의 Visual Studio를 사용하는 경우
프로그램 파일 (x86)
  • 64비트 OS에서 32비트 버전의 Visual Studio를 사용하는 경우
2022
설치하려는 Visual Studio 버전에 따라 다릅니다.
커뮤니티
설치하려는 Visual Studio 버전에 따라 다릅니다. "커뮤니티", "프로페셔널", "기업"등이 입력됩니다.

두 번째 줄은 현재 디렉토리를 BAT 파일의 위치로 이동합니다.

세 번째 줄은 ClickOnce 빌드 처리 명령입니다. 각 매개 변수의 의미는 다음과 같습니다.

매개 변수 이름 설명
msbuild 빌드 프로세스를 실행하는 명령입니다. 먼저 필요하고 작성되었습니다.
OnceBuildConfiguration을 클릭합.sln 빌드할 솔루션의 파일 이름을 설명합니다.
/t:Publish ClickOnce 빌드 프로세스를 나타냅니다.
/p:Configuration=Debug 솔루션에 대해 설정한 빌드 구성을 지정합니다. 빌드할 디버그 구성을 변경하려면 "디버그" 부분의 텍스트를 변경합니다.
/p:PublishUrl="publish\Debug\\" Visual Studio 게시 화면에서 "공용 폴더 위치" 값을 지정된 문자열로 덮어쓰고 실행합니다.
/p:InstallUrl="\\xxxxServer\publish_Debug\\" Visual Studio 게시 화면에서 "설치 폴더 URL" 값을 지정된 문자열로 덮어쓰고 실행합니다.

일부 매개 변수가 추출되었지만 다른 매개 변수에 대해서는 다음 링크를 참조하십시오.

이번에는 샘플로 각 디버그 및 릴리스 빌드에서 ClickOnce의 게시 매개 변수를 변경하므로 다음과 같이 만들 것입니다.

에 의해 게시 ClickOnceDebug.bat

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

ClickOnceRelease 게시 .bat

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Release /p:PublishUrl="publish\Release\\" /p:InstallUrl="\\xxxxServer\publish_Release\\"

ClickOnce BAT 파일 실행을 게시합니다.

각 BAT 파일을 실행해 보십시오.

명령 프롬프트가 시작되고 빌드가 시작됩니다.

사실, 이번에 생성 된 BAT 파일은 빌드 할 때까지의 프로세스 일 뿐이므로 파일은 "공용 폴더 위치"에 만들어지지 않습니다. 게시에 필요한 파일이 작성되었습니다. 예를 들어 디버그 빌드의 경우 "프로젝트 폴더 경로 <\bin\Debug\app.publish\"에 파일이 있>야 합니다. 이러한 파일을 "설치 폴더의 URL"에 복사하면 ClickOnce로 올바르게 작동합니다.

공용 폴더 위치에 게시(대상이 직접 액세스할 수 있는 폴더인 경우)

다음 사이트는 이 부분에 대한 참조로 사용됩니다.

이 영역은 ClickOnce의 처리와 직접 관련이 없으므로 자세한 설명은 위의 사이트를 참조하십시오.

먼저 텍스트 편집기에서 프로젝트 파일(.csproj)을 엽니다. 솔루션 파일이 아닙니다.

내부에는 XML 구조가 있으며 맨 아래로 스크롤하면 위의 줄에 </Project> 다음 코드를 추가하십시오. 파일 복사 전제 프로세스 인 경우 내용은 고정되어 있지만 그 부분은 CopyPublishedApplication 임의적입니다. 나중에 이 이름을 사용합니다.

<!-- ここから ClickOnce の発行処理 -->
<Target Name="CopyPublishedApplication">
  <ItemGroup>
    <MySourceFiles Include="$(PublishDir)**\*.*" Exclude="$(PublishDir)$(AssemblyName).exe" />
  </ItemGroup>
  <PropertyGroup>
    <AppricationDir>$(_DeploymentApplicationDir.Substring($(PublishDir.Length)))</AppricationDir>
  </PropertyGroup>
  <Copy SourceFiles="@(MySourceFiles)" DestinationFiles="@(MySourceFiles->'$(PublishUrl)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!-- ここまで ClickOnce の発行処理 -->

입력 한 후에 저장하십시오.

그런 다음 각 BAT 파일을 열고 msbuild 매개 변수에 /t:CopyPublishedApplication 추가하십시오. CopyPublishedApplication 내가 이전에 너희에게 준 이름이다.

ClickOnceDebug 게시 .bat (예)

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /t:CopyPublishedApplication /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

BAT 파일을 실행하면 파일이 공용 폴더 위치로 복사된 것을 볼 수 있습니다. 현재로서는 < 프로그램 이름>.exe 파일이 없지만 원래 setup.exe에 포함되어 있기 때문에 불필요합니다.

부록

솔루션에 여러 프로젝트가 있는 경우 모든 프로젝트에 대해 실행됩니다 CopyPublishedApplication . 대부분의 경우 exe 프로젝트로만 설정되므로 다른 프로젝트에서 CopyPublishedApplication 실행할 때 오류가 표시됩니다. 메시지만 표시되므로 무시해도 안전합니다.

공용 폴더 위치에 게시(FTP의 경우)

나는 그것을 시도하지 않았지만 다음 사이트를 참조 할 수 있습니다.

명심해야 할 다른 것들

  • ClickOnce 발급을 여러 부분으로 분할하더라도 엔터티는 동일한 프로그램으로 취급되므로 예를 들어 디버그에 게시된 프로그램과 릴리스와 함께 게시된 프로그램을 동일한 환경에 설치할 수 없습니다. 설치하려면 각 어셈블리의 이름을 변경하는 등의 조치를 취해야합니다. 다음 사이트를 참조하여 식별 된 내용을 확인하십시오.