使用 CLI 发布适用于 Windows

您所在的位置:网站首页 无法安装此更新0xc19001e1 使用 CLI 发布适用于 Windows

使用 CLI 发布适用于 Windows

2023-05-07 07:54| 来源: 网络整理| 查看: 265

使用 CLI 发布适用于 Windows 的 .NET MAUI 应用 项目 05/05/2023 适用于 Android 的发布 适用于 iOS 的发布 发布 macOS 版 适用于 Windows 的发布

分发适用于 Windows 的 .NET 多平台应用 UI (.NET MAUI) 应用时,可以将应用及其依赖项发布到文件夹,以便部署到另一个系统。 还可以将应用打包到 MSIX 包中,这对安装应用的用户有许多好处。 有关 MSIX 的优点的详细信息,请参阅 什么是 MSIX?

.NET MAUI 目前仅允许发布 MSIX 包。 尚无法发布 Windows 可执行文件以供分发。

创建签名证书

必须使用签名证书来发布应用。 此证书用于对 MSIX 包进行签名。 以下步骤演示如何使用 PowerShell 创建和安装自签名证书:

注意

创建和使用自签名证书时,只有安装并信任证书的用户才能运行应用。 这很容易实现以进行测试,但它可能会阻止其他用户安装你的应用。 准备好发布应用时,建议使用受信任的源颁发的证书。 这种集中信任系统有助于确保应用生态系统具有验证级别,以保护用户免受恶意参与者的侵害。

打开 PowerShell 终端,导航到包含项目的目录。

New-SelfSignedCertificate使用 命令生成自签名证书。

当用户安装应用时,将 向用户显示值,提供自己的值并省略 < > 字符。 可以将 参数设置为 FriendlyName 所需的任何文本字符串。

New-SelfSignedCertificate -Type Custom ` -Subject "CN=" ` -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 Subject, FriendlyName, Thumbprint

应看到结果类似于以下输出:

Thumbprint Subject FriendlyName ---------- ------- ------------ DE8B962E7BF797CB48CCF66C8BCACE65C6585E2F CN=1f23fa36-2a2f-475e-a69e-3a14fe56ed4 A6CA34FD0BA6B439787391F51C87B1AD0C9E7FAE [email protected] 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

稍后将使用证书的 指纹 ,因此请将其复制到剪贴板。 它是 指纹 值,其条目与证书的 Subject 和 FriendlyName 匹配。

有关详细信息,请参阅 创建用于包签名的证书。

配置项目生成设置

项目文件是放置特定于 Windows 的生成设置的好位置。 你可能不希望将某些设置放入项目文件,例如密码。 本部分所述的设置可以使用 格式在命令行 -p:name=value 上传递。 如果已在项目文件中定义了设置,则命令行上传递的设置将替代项目设置。

将以下 节点添加到项目文件。 仅当目标框架为 Windows 且配置设置为 Release时,才会处理此属性组。 每当在模式下生成或发布 Release 时,此配置部分将运行。

true A10612AF095FD8F8255F4C6691D88F79EF2B135E $(RuntimeIdentifierOverride)

将 属性值替换为之前生成的证书指纹。 或者,可以从项目文件中删除此设置,并在命令行上提供此设置。 例如:-p:PackageCertificateThumbprint=A10612AF095FD8F8255F4C6691D88F79EF2B135E。

此示例中的第二 个是解决 Windows SDK 中的 bug 所必需的。 有关该 bug 的详细信息,请参阅 WindowsAppSDK 问题 #2940。

发布

若要发布应用,请打开 VS 2022 终端的开发人员命令提示 ,并导航到 .NET MAUI 应用项目的文件夹。 运行 命令 dotnet publish ,提供以下参数:

参数 值 -f 目标框架,即 net6.0-windows{version} 或 net7.0-windows{version}。 此值是 Windows TFM,例如 net6.0-windows10.0.19041.0。 确保此值与 .csproj 文件中节点中的值相同。 -c 生成配置,即 Release。 -p:RuntimeIdentifierOverride=win10-x64- 或 --p:RuntimeIdentifierOverride=win10-x86 避免 WindowsAppSDK 问题 #2940 中详述的 bug。 -x64根据目标平台选择 参数的 或 -x86 版本。

警告

尝试发布 .NET MAUI 解决方案将导致 dotnet publish 命令尝试单独发布解决方案中的每个项目,这可能会导致将其他项目类型添加到解决方案时出现问题。 因此,命令 dotnet publish 的范围应限定为 .NET MAUI 应用项目。

例如:

dotnet publish -f net7.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64

发布生成并打包应用,将签名的包复制到 bin\Release\net7.0-windows10.0.19041.0\win10-x64\AppPackages\\ 文件夹。 是一个以项目和版本命名的文件夹。 在此文件夹中,有一个 msix 文件,即应用包。

有关命令的详细信息 dotnet publish ,请参阅 dotnet publish。

安装应用

若要安装应用,必须使用已信任的证书对应用进行签名。 如果不是,Windows 将不允许你安装应用。 将显示如下所示的对话框,其中禁用了“安装”按钮:

请注意,在上图中,发布服务器为“未知”。

若要信任应用包的证书,请执行以下步骤:

右键单击 .msix 文件,然后选择“属性”。

选择“ 数字签名 ”选项卡。

选择证书,然后按 “详细信息”。

选择“ 查看证书”。

选择 “安装证书...”。

选择 “本地计算机 ”,然后选择“ 下一步”。

如果“用户帐户控制”提示你 是否允许此应用对设备进行更改?,请选择“ 是”。

在 “证书导入向导” 窗口中,选择“ 将所有证书放入以下存储区”。

选择“浏览...”,然后选择“受信任的人员存储。 选择“确定”关闭对话框。

选择“下一步”,然后选择“完成”。 应会看到一个对话框,显示: 导入成功。

在此过程过程中打开的任何窗口上,选择“ 确定” 以将其全部关闭。

现在,请尝试再次打开包文件以安装应用。 应会看到如下所示的对话框,其中发布服务器已正确显示:

如果要 安装 应用,请选择“安装”按钮。

当前限制

以下列表描述了发布和打包的当前限制:

如果尝试使用发布文件夹中的可执行文件直接运行已发布应用,则发布的应用不起作用。 运行应用的方式是首先通过打包的 MSIX 文件安装它。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3