Используя приложение WinForm
, я пытаюсь имитировать этот образец с сайта Microsoft Github, который показывает, как получить информацию о пакете с помощью API упаковки среды выполнения Windows.
Iполучаю следующую ошибку в строке: Package package = Package.Current;
из приведенного ниже кода при попытке получить информацию о пакете UWP из приложения WinForm :
Типили имя пространства имен «Пакет» не может быть найдено (вам не хватает директивы using или ссылки на сборку?)
Вопрос : Хотя ошибка является известным C #Ошибка, которая имеет много онлайн-сообщений / решений, но здесь контекст отличается.Компилятор, кажется, жалуется, что мне не хватает необходимой сборки для Класс пакета .Но у меня есть using Windows.ApplicationModel;
using оператор в моем коде ниже.Так что может быть возможной причиной ошибки;то есть то, что мне здесь не хватает?
ПРИМЕЧАНИЕ : чтобы обеспечить включение необходимых сборок, я установил этот UWPDesktop пакет NuGet в WinForm Project на VS2017-ver 15.9.5
on Windows 10 Pro - Ver 8109
:
Приложение WinForm : соответствующий код 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);
}
}
}
Из примера UWP GitHubпроект : соответствующий код из script1_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
не жаловался, когда я жестко их кодировал.Кроме того, все операторы Using
, начинающиеся с Windows.
, отображаются серым цветом, как показано на рисунке ниже.Не уверен, что это как-то связано с ошибкой: