Wie auf einem nativen WinRT-Komponente aus einem Projekt gelungen?
Es wurde gesagt, dass Sie können erstellen Sie ein C++ WinRT-Komponente, die Sie konsumieren in C#. Ich habe ein einfaches test-Projekt - C# - XAML-app, und ein C++ - Projekt mit nur den basic-WinRT-Komponente project-Vorlage. Wenn ich versuche, um eine Projekt-Referenz in die C# - XAML-Projekt, Sie sagt, Sie kann nicht den Verweis hinzuzufügen (nicht sicher, warum). Ich kann die native WinRT-Komponente und einer .die winmd-Datei generiert wird, und ich kann hinzufügen ein Verweis auf diese .die winmd-Datei manuell mithilfe der Schaltfläche durchsuchen im Dialogfeld Verweis hinzufügen. Dies ermöglicht mir Zugriff auf die Methoden in der nativen Bibliothek, aber wenn ich Baue, es sagt, es ist mit Plattform.IDisposable, aber der Typ in einer assembly definiert ist, die nicht verwiesen wird. Ich habe nicht gesehen, jede der Sitzungen zeigen dieses Szenario.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand die Antwort! Sieht aus wie ein glitch, aber es hat einen work-around:
http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/1900bd21-8693-4127-800a-f35cfd5daac2
Grundsätzlich zuerst reinigen Sie die WinRT-Komponente Projekt, dann wird Sie den Verweis hinzuzufügen, dann fügen Sie einen Verweis manuell zu Plattform.winmd befindet sich im \VC\bin, sollten dann Sie gut zu gehen.
C++ WinRT-assembly, die Sie verweisen, verwendet wahrscheinlich Objekte, die Implementierung von der IDisposable-Schnittstelle, so dass Sie auch Referenz die C++ - assembly mit der Schnittstelle.
Microsoft.VCLibs
zu .NET app für Sie zu behebenPlatform.IDisposable
(on a side note, würde ich es erwartet habe, projiziert werden, wieSystem.IDisposable
, aber es passiert nicht...). Jedoch, indem es als Referenz zu verursachen scheint Probleme bei der Bereitstellung. Vermutlich eine Dev Preview Laune.So hatte ich ähnliche Probleme, nach dem hinzufügen einer Referenz zu Microsoft.VCLibs, ich war nicht in der Lage zu implementieren. Allerdings ist mir aufgefallen, dass standardmäßig WinRT-Komponente kompiliert wird, um x86-code in der Erwägung, dass die C# - Metro-Stil-app Ziele JEDE cpu, und das war die Ursache in meinem Fall. Schalt-C# - app auf x86 ist das problem gelöst.