【发布时间】:2019-06-21 23:32:52
【问题描述】:
使用 WinForm 应用程序,我试图从 Microsoft 的 Github 站点模仿 sample,该站点显示了如何使用 Windows 运行时打包 API 获取包信息。
尝试从 WinForm 应用程序获取 UWP 包信息时,我在以下代码行中遇到以下错误:Package package = Package.Current;:
找不到类型或命名空间名称“Package”(您是否缺少 using 指令或程序集引用?)
问题:虽然该错误是一个著名的 C# 错误,有很多在线帖子/解决方案,但这里的上下文不同。编译器似乎在抱怨我缺少Package class 所需的程序集。但我在下面的代码中确实有using Windows.ApplicationModel; using 语句。那么可能导致错误的原因是什么?即我可能在这里遗漏了什么?
注意:为了确保包含所需的程序集,我确实在 VS2017-ver 15.9.5 上的 WinForm 项目中安装了这个 UWPDesktop NuGet 包Windows 10 Pro - Ver 8109:
WinForm App: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. 语句。对于其他Using Windows..... 语句,我必须进行硬编码——例如Windows.ApplicationModel;。然而VS2017 在我硬编码时并没有抱怨。此外,所有以Windows. 开头的Using 语句都显示为灰色,如下图所示。不确定它是否与错误有关:
【问题讨论】:
标签: c# uwp desktop-bridge