代码之家  ›  专栏  ›  技术社区  ›  nam

从WinForm应用程序获取UWP包信息时出错?

  •  0
  • nam  · 技术社区  · 5 年前

    使用A WinForm 应用程序,我想模仿这个 sample 来自Microsoft的Github站点,该站点演示如何使用Windows运行时打包API获取包信息。

    我在第行收到以下错误: Package package = Package.Current; ,当试图从 WiFraseApp :

    找不到类型或命名空间名称“package”(是否缺少using指令或程序集引用?)

    问题 :尽管这个错误是一个著名的C错误,它有许多在线文章/解决方案,但是这里的上下文是不同的。编译器似乎在抱怨我缺少 Package class . 但我确实有 using Windows.ApplicationModel; 在下面的代码中使用语句。那么,错误的可能原因是什么,也就是说,这里可能缺少什么?

    注释 :为了确保包含所需的程序集,我安装了此程序集 UWPDesktop 上的WinForm项目中的Nuget包 VS2017-ver 15.9.5 Windows 10 Pro - Ver 8109 :

    WiFraseApp :相关代码 throws error 在线: package package=package.current;

    using System;
    using System.Windows.Forms;
    using Windows.ApplicationModel; //I added from here
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Navigation;
    using Windows.ApplicationModel.Background;
    using Windows.Foundation.Collections;
    using Windows.Storage;
    using Windows.Storage.Search;
    using Windows.UI.Xaml;
    using Windows.Management.Deployment;
    
    namespace WinForms_to_UWP
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Package package = Package.Current;
                PackageId packageId = package.Id;
    
                Console.WriteLine(packageId.FullName);
            }
        }
    }
    

    来自Github的UWP示例项目 :来自的相关代码 scenario1_identity.xaml.cs 很好用:

    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Navigation;
    using SDKTemplate;
    using System;
    using Windows.ApplicationModel;
    
    namespace SDKTemplate
    {
    void GetPackage_Click(Object sender, RoutedEventArgs e)
    {
        Package package = Package.Current;
        PackageId packageId = package.Id;
    
        String output = String.Format("Name: \"{0}\"\n" + packageId.FullName);
    
        OutputTextBlock.Text = output;
    }
    

    更新 :

    同样值得注意的是,添加时 Using Windows..... 上面的陈述, VS intellisense 只承认 Window.Foundation Window.UI. 声明。为他人 使用Windows….. 我必须硬编码的声明-例如, Windows.ApplicationModel; . 然而 VS2017 我硬编码的时候没有抱怨。此外,所有 Using 以开头的语句 Windows. 灰显,如下图所示。不确定是否与错误有关:

    enter image description here

    1 回复  |  直到 5 年前
        1
  •  2
  •   Stefan Wick MSFT    5 年前

    恐怕您所引用的nuget包已经过时了,不能再维护了。

    但这个问题很容易解决。只需添加对所针对的SDK版本的windows.winmd文件的引用。请参见以下屏幕截图:

    enter image description here