StorageFile Async-Verwendung in einer NON Metro-Anwendung

8

Ich versuche, eine Instanz von StorageFile in meiner Klassenbibliothek zu erstellen ...

%Vor%

VS11 erstellt nicht, sagen: 'erwarten' erfordert, dass der Typ 'Windows.Foundation.IAsyncOperation' über eine geeignete GetAwaiter-Methode verfügt. Vermissen Sie eine Verwendungsrichtlinie für 'System'?

offensichtlich verwende ich .net 4.5 als Ziel und ich verweise auf Windows-Assemblys ... nicht sicher, warum dieser Code in MetroStyle funktioniert, aber nicht in einer Klassenbibliothek erstellt ... Wie kann ich eine Instanz von Storagefile in einer Klassenbibliothek erstellen ??? In diesem Stadium ist es nicht wichtig, ob die Datei asynchron erstellt wird ...

pls lass mich deine Gedanken wissen ... Stelio

    
Stelio Di Bello 03.05.2012, 09:18
quelle

4 Antworten

10

Was für mich funktionierte, ist das "manuelle Hinzufügen" der TargetPlatformVersion

%Vor%

und in der Elementgruppe fügen Sie Folgendes hinzu:

%Vor%

Dann sollte das Projekt normalerweise kompilieren.

    
Panagiotis Lefas 01.11.2013 17:17
quelle
8

Ich hatte das gleiche Problem. Das Problem war System-Namespace fehlt im Namespace-Header. Ich habe gerade System im Namespace enthalten und es hat funktioniert. hoffe es hilft.

    
Ansary Ans21 25.04.2014 10:35
quelle
5

Es sieht so aus, als ob Sie versuchen, einen Typ aus den WinRT-Bibliotheken zu verwenden, weil die StorageFile Klassendokumentation gibt an, dass es nur für Metro gilt und in Windows.Storage gefunden wird.

In diesem Blogpost wird erklärt, wie man es erstellt, aber es scheint ein manueller Prozess zu sein. Es beschreibt auch die Ursache des Fehlers:

  

Wenn das Schlüsselwort await verwendet wird, sucht der Compiler nach einem GetAwaiter   Methode auf dieser Schnittstelle. Seit IAsyncOperation nicht   Definieren Sie eine GetAwaiter-Methode, nach der der Compiler suchen soll   Erweiterungsmethode.

Es sieht so aus, als müssten Sie einen Verweis hinzufügen auf: System.Runtime.WindowsRuntime.dll

Bitte nehmen Sie sich die Zeit, um seinen Blog-Beitrag zu lesen, aber ich werde den wichtigen Teil hier für Klarheit setzen.

Blog Inhalte unter unbegreiflichen Plagiaten

Zuerst habe ich in Notepad den folgenden C # Quellcode in EnumDevices.cs erstellt:

%Vor%

Als Zweites habe ich eine Build.bat-Datei erstellt, die ich von der Eingabeaufforderung des Entwicklers aus führe, um diesen Code zu erstellen (Dies sollte eine Zeile sein, aber ich umgebe sie hier für die Lesefähigkeit):

%Vor%

Dann führe ich an der Eingabeaufforderung einfach die EnumDevices.exe aus, um die Ausgabe zu sehen.

    
Adam Houldsworth 03.05.2012 09:30
quelle
1

Es muss lange her sein seit dem Post als ich Nach dem Hinzufügen von Referenzen:
System.Runtime.WindowsRuntime.dll
System.Threading.Tasks.dll

und Targeting Windows 8 in der Projektdatei:

%Vor%

Das oben erwähnte Beispiel kann in VS zusammengestellt werden.

    
user2523651 08.08.2013 14:14
quelle