CLI를 사용하여 Windows용 패키지된 .NET MAUI 앱 게시
Windows용 .NET 다중 플랫폼 앱 UI(.NET MAUI) 앱을 배포할 때 앱 및 해당 종속성을 다른 시스템에 배포할 폴더에 게시할 수 있습니다. 앱을 MSIX 패키지로 패키지할 수도 있습니다. 이 패키지는 앱을 설치하는 사용자에게 많은 이점이 있습니다. MSIX의 이점에 대한 자세한 내용은 MSIX 란?
서명 인증서 만들기
앱 게시에 사용하기 위해 서명 인증서를 사용해야 합니다. 이 인증서는 MSIX 패키지에 서명하는 데 사용됩니다. 다음 단계에서는 PowerShell을 사용하여 자체 서명된 인증서를 만들고 설치하는 방법을 보여 줍니다.
참고 항목
자체 서명된 인증서를 만들고 사용하는 경우 인증서를 설치하고 신뢰하는 사용자만 앱을 실행할 수 있습니다. 테스트를 위해 구현하기는 쉽지만 추가 사용자가 앱을 설치하지 못할 수 있습니다. 앱을 게시할 준비가 되면 신뢰할 수 있는 원본에서 발급한 인증서를 사용하는 것이 좋습니다. 이 중앙 집중식 신뢰 시스템은 앱 에코시스템에 악의적인 행위자로부터 사용자를 보호하기 위한 확인 수준이 있는지 확인하는 데 도움이 됩니다.
PowerShell 터미널을 열고 프로젝트를 사용하여 디렉터리로 이동합니다.
명령을
New-SelfSignedCertificate
사용하여 자체 서명된 인증서를 생성합니다.사용자가
<PublisherName>
앱을 설치하고, 고유한 값을 제공하고, 문자를 생략할 때 값이< >
사용자에게 표시됩니다. 매개 변수를FriendlyName
원하는 텍스트 문자열로 설정할 수 있습니다.New-SelfSignedCertificate -Type Custom ` -Subject "CN=<PublisherName>" ` -KeyUsage DigitalSignature ` -FriendlyName "My temp dev cert" ` -CertStoreLocation "Cert:\CurrentUser\My" ` -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")
다음 PowerShell 명령을 사용하여 생성된 인증서에 대한 인증서 저장소를 쿼리합니다.
Get-ChildItem "Cert:\CurrentUser\My" | Format-Table Thumbprint, Subject, FriendlyName
다음 출력과 유사한 결과가 표시됩니다.
Thumbprint Subject FriendlyName ---------- ------- ------------ DE8B962E7BF797CB48CCF66C8BCACE65C6585E2F CN=1f23fa36-2a2f-475e-a69e-3a14fe56ed4 A6CA34FD0BA6B439787391F51C87B1AD0C9E7FAE CN=someone@microsoft.com 94D93DBC97D4F7E4364A215F15C6ACFEFC71E569 CN=localhost ASP.NET Core HTTPS development certificate F14211566DACE867DA0BF9C2F9C47C01E3CF1D9B CN=john 568027317BE8EE5E6AACDE5079D2DE76EC46EB88 CN=e1f823e2-4674-03d2-aaad-21ab23ad84ae DC602EE83C95FEDF280835980E22306067EFCA96 CN=John Smith, OU=MSE, OU=Users, DC=com 07AD38F3B646F5AAC16F2F2570CAE40F4842BBE0 CN=Contoso My temp dev cert
인증서의 지문은 나중에 사용되므로 클립보드에 복사합니다. 항목이 인증서의 제목 및 FriendlyName과 일치하는 지문 값입니다.
자세한 내용은 패키지 서명에 대한 인증서 만들기를 참조하세요.
프로젝트 빌드 설정 구성
프로젝트 파일은 Windows 관련 빌드 설정을 배치하는 데 적합합니다. 암호와 같은 일부 설정을 프로젝트 파일에 배치하지 않을 수 있습니다. 이 섹션에 설명된 설정은 명령줄에서 형식으로 -p:name=value
전달할 수 있습니다. 프로젝트 파일에 설정이 이미 정의된 경우 명령줄에 전달된 설정이 프로젝트 설정을 재정의합니다.
프로젝트 파일에 다음 <PropertyGroup>
노드를 추가합니다. 이 속성 그룹은 대상 프레임워크가 Windows이고 구성이 로 Release
설정된 경우에만 처리됩니다. 이 구성 섹션은 빌드 또는 게시 모드에서 Release
실행할 때마다 실행됩니다.
<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows' and '$(Configuration)' == 'Release'">
<AppxPackageSigningEnabled>true</AppxPackageSigningEnabled>
<PackageCertificateThumbprint>A10612AF095FD8F8255F4C6691D88F79EF2B135E</PackageCertificateThumbprint>
</PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows' and '$(RuntimeIdentifierOverride)' != ''">
<RuntimeIdentifier>$(RuntimeIdentifierOverride)</RuntimeIdentifier>
</PropertyGroup>
<PackageCertificateThumbprint>
속성 값을 이전에 생성한 인증서 지문으로 바꿉니다. 또는 프로젝트 파일에서 이 설정을 제거하고 명령줄에 제공할 수 있습니다. 예: -p:PackageCertificateThumbprint=A10612AF095FD8F8255F4C6691D88F79EF2B135E
이 예제의 두 번째 <PropertyGroup>
방법은 Windows SDK의 버그를 해결하는 데 필요합니다. 버그에 대한 자세한 내용은 WindowsAppSDK 문제 #3337을 참조하세요.
게시
앱을 게시하려면 VS 2022 터미널용 개발자 명령 프롬프트를 열고 .NET MAUI 앱 프로젝트의 폴더로 이동합니다. dotnet publish
다음 매개 변수를 제공하여 명령을 실행합니다.
매개 변수 | 값 |
---|---|
-f |
대상 프레임워크입니다 net8.0-windows{version} . 이 값은 다음과 같은 net8.0-windows10.0.19041.0 Windows TFM입니다. 이 값이 .csproj 파일의 <TargetFrameworks> 노드 값과 동일한지 확인합니다. |
-c |
빌드 구성입니다 Release . |
-p:RuntimeIdentifierOverride=win10-x64 -또는- -p:RuntimeIdentifierOverride=win10-x86 |
WindowsAppSDK 문제 #3337에 자세히 설명된 버그를 방지합니다. 대상 플랫폼에 -x64 따라 매개 변수의 버전 또는 -x86 버전을 선택합니다. |
Warning
.NET MAUI 솔루션을 게시하려고 하면 명령이 솔루션의 dotnet publish
각 프로젝트를 개별적으로 게시하려고 시도하므로 솔루션에 다른 프로젝트 형식을 추가한 경우 문제가 발생할 수 있습니다. 따라서 명령의 dotnet publish
범위를 .NET MAUI 앱 프로젝트로 지정해야 합니다.
예시:
dotnet publish -f net8.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64
참고 항목
.NET 8 dotnet publish
에서 명령은 기본적으로 구성으로 Release
설정됩니다. 따라서 명령줄에서 빌드 구성을 생략할 수 있습니다.
게시는 앱을 빌드하고 패키지하며 서명된 패키지를 bin\Release\net8.0-windows10.0.19041.0\win10-x64\AppPackages\<appname>\ 폴더에 복사합니다. <appname> 은 프로젝트와 버전 모두의 이름을 따서 명명된 폴더입니다. 이 폴더에는 msix 파일이 있으며, 이것이 앱 패키지입니다.
명령에 대한 자세한 내용은 dotnet publish를 dotnet publish
참조하세요.
앱 설치
앱을 설치하려면 이미 신뢰하는 인증서로 서명해야 합니다. 그렇지 않으면 Windows에서 앱을 설치할 수 없습니다. 설치 단추를 사용하지 않도록 설정하면 다음과 유사한 대화 상자가 표시됩니다.
이전 이미지에서 게시자는 "알 수 없음"이었습니다.
앱 패키지의 인증서를 신뢰하려면 다음 단계를 수행합니다.
.msix 파일을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
디지털 서명 탭을 선택합니다.
인증서를 선택한 다음 세부 정보를 누릅니 다.
인증서 보기를 선택합니다.
인증서 설치...를 선택합니다.
로컬 컴퓨터를 선택한 다음, 다음을 선택합니다.
사용자 계정 컨트롤에서 이 앱이 디바이스를 변경할 수 있도록 허용하시겠습니까?라는 메시지가 표시되면 [예]를 선택합니다.
인증서 가져오기 마법사 창에서 모든 인증서를 다음 저장소에 배치를 선택합니다.
찾아보기를 선택한 다음 신뢰할 수 있는 사람 저장소를 선택합니다. 확인을 선택하여 대화 상자를 닫습니다.
다음, 마침을 차례로 선택합니다. 가져오기가 성공했음을 나타내는 대화 상자가 표시됩니다.
이 프로세스의 일부로 열린 모든 창에서 확인을 선택하여 모두 닫습니다.
이제 패키지 파일을 다시 열어 앱을 설치합니다. 게시자가 올바르게 표시된 다음과 유사한 대화 상자가 표시됩니다.
앱을 설치하려면 설치 단추를 선택합니다.
현재 제한 사항
다음 목록에서는 게시 및 패키징의 현재 제한 사항에 대해 설명합니다.
- 게시된 앱은 게시 폴더에서 실행 파일로 직접 실행하려고 하면 작동하지 않습니다.
- 앱을 실행하는 방법은 먼저 패키지된 MSIX 파일을 통해 설치하는 것입니다.
.NET MAUI