4

I'm trying to follow UWP with Desktop Extension – Part 2 of UWP and WinForms desktop-bridge calling the processes and passing parameters. This example Console Program.cs code includes parameters string:

 string parameters = ApplicationData.Current.LocalSettings.Values["parameters"] as string;

But the name ApplicationData does not exists in the current context, I'm trying to find out, if I've missed some reference or it is different version of C#

I'm not sure even if it is what it requires, but adding of reference Windows.Foundation.UniversalApiContract.windmd throws another error with Values:

Error CS0012 The type 'IPropertySet' is defined in an assembly that is not referenced. You must add a reference to assembly 'Windows.Foundation.FoundationContract

2 Answers2

6

@Nico Zhu - MSFT is correct, but I would also suggest alternative approach, which may make your life easier in the long run - the UWP APIs for desktop apps are now also distributed via NuGet as a package which takes care of referencing the right libraries for you.

It is in preview at the time of writing, so you can install as follows:

Install-Package Microsoft.Windows.SDK.Contracts -Version 10.0.18362.2002-preview

See the NuGet page for more info.

Martin Zikmund
  • 38,440
  • 7
  • 70
  • 91
  • 1
    Didn't work for me, Windows.Storage namespace was not being resolved after installing that package – CularBytes Oct 25 '19 at 11:40
  • @Martin Zikmund, I currently have this package installed in a winforms app (packaged) but can't access ApplicationData.Current.LocalSettings.Values. Is there a capability or a manual Package.appxmanifest edit required? Also need access to LocalFolder. – Carlo Mendoza Feb 16 '21 at 00:10
  • @Martin Zikmund, I ended up using try-convert to get it over to .NET 5 – Carlo Mendoza Feb 16 '21 at 05:49
  • 1
    @CarloMendoza please, could you clarify how you did it? – ZipGenius Jun 19 '21 at 19:34
3

If you want to use ApplicationData class, please add Windows.winmd where in the C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.17134.0\Windows.winmd. Then add Windows.Storage namespace.

Detail steps

Right click project References -> Add References -> Browse(file type all file)-> select Windows.winmd

Nico Zhu
  • 32,367
  • 2
  • 15
  • 36
  • 1
    Apparently this does not work with .NET 5.0: `error NETSDK1130: Windows.winmd cannot be referenced. Referencing a Windows Metadata component directly when targeting .NET 5 or higher is not supported. For more information, see https://aka.ms/netsdk1130` – izogfif Jun 26 '21 at 08:25