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