我正在尝试发布已生产一年多的 .NET Maui 应用程序的更新。我已经对该应用程序进行了多次更新,没有出现任何问题。然而,我最近不得不买一台新电脑,现在我无法更新该应用程序。我正在使用(并且已经使用)以下方法从 Visual Studio 终端使用 PowerShell 从 CLI 进行发布:
dotnet publish myapp.csproj -f net8.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64
在过去,这给了我所需的 msix 包,我可以与需要运行该程序的团队共享该包。但是,当我运行此发布命令时,我现在遇到以下错误:
错误:不支持带有“.DLL”扩展名的输入文件。
我四处寻找解决方案,阅读类似的问题,但似乎没有什么与我的问题相同。我尝试清理/重建、卸载/重新加载我的项目,并检查了我的所有属性和设置,但我看不到任何表明更改它可能会解决问题的内容。我还删除了包含解决方案的文件夹,并从 github 重新克隆了整个内容。我已重新启动计算机、重新启动并更新 Visual Studio。
根据 @Serg 的建议,我使用 -bl 标志运行构建。这给了我一个以前从未见过的不同的、意想不到的错误:
错误:使用应用程序主机 exe 打包的 .NET 应用程序不能与 ProcessorArchitecture 无关。请指定 RuntimeIdentifier 或 AnyCPU 以外的平台。
我更新了 .csproj 文件以指定 x64 平台,运行时标识符为 win-10-x64。我已将以下内容添加到该文件的顶层,以及发布条件和所有其他条件 (!= ''):
<Platforms>x64</Platforms>
<RuntimeIdentifier>win10-x64</RuntimeIdentifier>
这两个问题仍然存在。
在多次用头撞墙之后,我一时兴起尝试打包我的 .csproj 文件,看看这是否会给我带来任何有用的东西,而且确实如此!具体来说,它引导我将以下内容添加到我的 csproj 文件中:
<PropertyGroup>
<PublishReadyToRun>false</PublishReadyToRun>
</PropertyGroup>
添加此后,我就可以成功发布了。