I just created a new blank XAML/C# Windows Store app in Visual Studio. I tried to create a file in the Documents folder with this code:
// DEBUG ONLY:
StorageFile file = await KnownFolders.DocumentsLibrary.CreateFileAsync("Hey lol.txt");
But it throws this exception (which I expected):
WinRT information: Access to the specified location (DocumentsLibrary) requires a capability to be declared in the manifest.
Which is fine. I expected it. So I go to Package.appxmanifest
and go to Capabilities
tab, and to my surprise, there is no "DocumentsLibrary" capability listed.
How do I enable it if it's not even there?
Looks like your answer is here. The author shows it available in VS2012, but gone from the list in VS2013, citing MS policy against accessing that particular folder.
[Although] this capability is gone just from the UI, you still can open appxmanifest source and manually add the capability. The result will probably be the same as before – failure of certification for individual developers, so you better stay away from this trick. Microsoft strongly recommend against using Documents Library capability, suggesting Folder and File Pickers instead.
As per Grant's answer, a way around this is to add the Capability manually.
Right-click the Package.appxmanifest file in Solution Explorer, and select "View code", then either find the Capabilities element, or add it yourself:
...
<Capabilities>
<Capability Name="internetClient" />
<Capability Name="removableStorage" />
<Capability Name="documentsLibrary" />
</Capabilities>
</Package>
Here's what you'll get from the Windows Store when you try to publish it
As this is UAP the syntax needs to state this, should be as followed
<Capabilities>
<Capability Name="internetClient" />
<uap:Capability Name="documentsLibrary" />
</Capabilities>
You need to add 'uap:' in front of Capability