Prerequirement (how to set unpackaged proejct)

https://jhchoi.tistory.com/23

 

Method 1

(menu)build - publish

 

Method 2

(Soultion Explorer)project : right click - publish

 

Method 3 (.NET CLI / Example)

dotnet publish -c Release -r win10-your_version --self-contained false /p:PublishSingleFile=true /p:PublishProfile=win10-your_version

 

Build Option

project_folder\Properties\PublishProfiles\win10-your_version.pubxml

 

<PublishDir>bin\\YOUR_FOLDER</PublishDir>

<SelfContained>false</SelfContained>                   <!--true includes framework, false does not.-->

<PublishSingleFile>true</PublishSingleFile>    <!--Essential for single exe creation.-->

<PublishReadyToRun Condition="'$(Configuration)' == 'Debug'">False</PublishReadyToRun>

<PublishReadyToRun Condition="'$(Configuration)' != 'Debug'">true</PublishReadyToRun>

<Configuration>Release</Configuration>

<TargetFramework>net8.0-windows10.0.22621.0</TargetFramework> <!--Your windows version-->

 

Comment

Without framework, it's around 60MB.

with framework, it jumps to about 120MB.

However, WPF or WinForms are around 150KB.
 
 

 

'c# > winui3' 카테고리의 다른 글

winui 3 net8 unpackaged 프로젝트 환경 설정 하기  (4) 2024.01.04

요약

.csproj  의 PropertyGroup를 아래와 같이 수정, 추가 해준다.

그 후 project\Properties\PublishProfiles\ 경로의 각 pubxml파일에도 RuntimeIdentifiers를 수정해준다.

마지막으로 nuget package를 winui 최신 sdk버전으로 업데이트 해준다.

 

수정 필요 코드

 <TargetFramework>net8.0-windows10.0.22621.0</TargetFramework>

 <RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>

 

추가 필요 코드 // packaged 로 msix로 만드려면 이 두개를 추가하지 않는다.

 <WindowsPackageType>None</WindowsPackageType>

<WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>

 

csproj PropertyGroup 부분 종합

  <PropertyGroup>

    <OutputType>WinExe</OutputType>

    <TargetFramework>net8.0-windows10.0.22621.0</TargetFramework>

    <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>

    <RootNamespace>App10</RootNamespace>

    <ApplicationManifest>app.manifest</ApplicationManifest>

    <Platforms>x86;x64;ARM64</Platforms>

    <RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>

    <PublishProfile>win10-$(Platform).pubxml</PublishProfile>

    <UseWinUI>true</UseWinUI>

    <EnableMsixTooling>true</EnableMsixTooling>

    <WindowsPackageType>None</WindowsPackageType>

<WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>

  </PropertyGroup>

 

===

ERROR CASE1

XamlCheckProcessRequirements(); 부분에서 아래 에러가 발생한 경우

System.DllNotFoundException: 'Unable to load DLL 'Microsoft.ui.xaml.dll' or one of its dependencies: 지정된 모듈을 찾을 수 없습니다. (0x8007007E)'

 

아래 구문이 추가되어있지 않은 경우

<WindowsPackageType>None</WindowsPackageType>

 

===

ERROR CASE2

예외 발생: 'System.DllNotFoundException'(Microsoft.WindowsAppRuntime.Bootstrap.Net.dll)

 

아래 이 구문이 추가가 되어있지 않거나, windows app sdk 가 알맞은 버전이 설치되어있지 않은 경우.

<WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>

===

ERROR CASE3

디버깅하려면 먼저 프로젝트를 배포해야 합니다. Configuration Manager 배포를 사용하도록 설정하세요.

 

위 오류가 출력될 경우 바로 아래 구문을 주석처리 해보자.

<!--<WindowsPackageType>None</WindowsPackageType>-->

 

 

DEP1560: 매니페스트 파일 "C:\Users\choejaeho\source\repos\App10\App10\bin\ARM64\Release\net8.0-windows10.0.22621.0\win-arm64\AppxManifest.xml"을(를) 읽지 못했습니다. 이 파일을 다시 생성해야 할 수 있습니다. 오류를 수정하려면 솔루션 다시 빌드 명령을 실행하세요. FileNotFoundException - 'C:\Users\choejaeho\source\repos\App10\App10\bin\ARM64\Release\net8.0-windows10.0.22621.0\win-arm64\AppxManifest.xml' 파일을 찾을 수 없습니다. [0x80070002] - C:\Users\choejaeho\source\repos\App10\App10\bin\ARM64\Release\net8.0-windows10.0.22621.0\win-arm64\AppxManifest.xml

 

DEP1700: 조리법 파일 "C:\Users\choejaeho\source\repos\App10\App10\bin\x86\Release\net8.0-windows10.0.22621.0\win-x86\App10.build.appxrecipe"이(가) 없습니다. 프로젝트를 빌드해야 할 수도 있습니다.

 

이 DEP 오류 들의 경우에도 위 패키지 타입을 주석처리하거나 본인의 빌드 환경에 알맞은 x86 x64 arm 을 선택하여 빌드한다.

'c# > winui3' 카테고리의 다른 글

winui 3 create single exe  (2) 2024.01.08

+ Recent posts