阅读 msix 包 appxmanifest 版本
Posted
技术标签:
【中文标题】阅读 msix 包 appxmanifest 版本【英文标题】:Read msix package appxmanifest version 【发布时间】:2020-09-21 12:12:28 【问题描述】:我们有一个仅在内部使用的 .NET Core 应用程序。在从 WPF 切换到 .NET Core 期间,我们从 Click-Once 更改为 MSIX。在我们应用程序的窗口标题/标题中,我们还“输出”当前版本(主要、次要、...)。以前,我们采用了我们的启动项目的版本(称为“视图”)。现在使用MSIX,这个项目已经得到了我们需要的版本号(启动项目引用了“view”)。我们现在如何阅读正确的版本?
使用Assembly.GetEntryAssembly
或Assembly.GetCallingAssembly
会返回错误的版本——启动项目的版本。该应用程序不在 Windows 应用商店中,它将作为一个包进行侧面加载。有什么想法可以在部署我们的包时获得我们“生成”的“正确”版本?
【问题讨论】:
【参考方案1】:您需要安装 Windows 10 WinRT API 包。从 Nuget 安装包:Microsoft.Windows.SDK.Contracts
网址:https://www.nuget.org/packages/Microsoft.Windows.SDK.Contracts
然后你可以这样做:
var version = Windows.ApplicationModel.Package.Current.Id.Version;
applicationVersion = string.Format("0.1.2.3",
version.Major,
version.Minor,
version.Build,
version.Revision);
如果您想使用当前可用的包进行调试或运行,只需将包部署项目设置为启动项目即可。
其他参考:
https://blogs.windows.com/windowsdeveloper/2019/09/30/windows-10-winrt-api-packs-released/
https://docs.microsoft.com/en-us/uwp/api/
https://www.thomasclaudiushuber.com/2019/04/26/calling-windows-10-apis-from-your-wpf-application/
【讨论】:
对不起,我的回复晚了。谢谢,这个解决方案就像一个魅力,所以我接受了这个答案:) 对于 .Net 5,无需安装任何东西,只需将 csproj TargetFramework 从(例如)net5.0-windows 更改为 net5.0-windows10.0.17763 或 net5.0-windows10.0.19041 .1 或您需要的任何版本。 注意:这适用于 .NET Core,但不适用于 .NET 5。以上是关于阅读 msix 包 appxmanifest 版本的主要内容,如果未能解决你的问题,请参考以下文章
通过 MSIX 包安装的应用程序“忘记”虚拟 LocalAppData 路径