添加"winmd"引用与添加项目引用

Max*_*Max 7 .net c# visual-studio visual-studio-2012 windows-phone-8

我有一个Windows Phone 8项目和另一个用C++编写的项目; 两者都在同一个解决方案中.C++项目是WP8项目中使用的动态库,它被配置为.winmd.dll文件顶部生成Windows Metada文件().

在WP8项目中将C++项目添加为项目引用时,一切都运行良好.

但是,我想直接引用二进制文件而不是项目,所以我尝试引用.dll自身,但VS2012不会让我(我完全理解,因为库不受我理解的管理)..winmd相反,添加文件是有效的,我的意思是它编译时没有警告/错误; 但它在运行时崩溃(TargetInvocationException因为无法找到C++库的"实际"代码,我得到了一个).

添加.winmd文件时,我确保.dll文件旁边的文件.将这两个文件放在binWP8项目的目录中也不起作用.

我在互联网上找不到任何线索,如果你能给我一些,我将不胜感激,欢迎任何提示!

这是我正在尝试设置的简单架构的架构:

建筑

这是引发异常的堆栈跟踪:

at System.StubHelpers.StubHelpers.GetWinRTFactoryObject(IntPtr pCPCMD)
   at Sqlite.Sqlite3.sqlite3_open_v2(String filename, Database& db, Int32 flags, String zVfs)
   at SQLite.SQLite3.Open(String filename, Database& db, Int32 flags, IntPtr zVfs)
   at SQLite.SQLiteConnection..ctor(String databasePath, SQLiteOpenFlags openFlags, Boolean storeDateTimeAsTicks)
   at SQLite.SQLiteConnection..ctor(String databasePath, Boolean storeDateTimeAsTicks)
   at WP8ClassLibrary.SomeManager..ctor(String databasePath)
   at WP8App.SomeViewModel..ctor()
   at WP8App.MainPage..ctor()
Run Code Online (Sandbox Code Playgroud)

Max*_*Max 0

好吧,我设法让它发挥作用。正如原始帖子中的堆栈跟踪所表明的那样,我在应用程序中使用 SQLite。如果我添加该winmd文件作为引用而不是 C++ 项目,则似乎某些依赖项不满足。

SQLite for Windows Phone因此我必须在项目中添加对的引用WP8ClassLibrary。这在某种程度上是我的一个愚蠢的错误,因为这个 C++ 项目可能本身就带有这种依赖关系(其中有几个winmd引用,但我无法SQLite for Windows Phone根据它们晦涩的名称猜测它们会成为其中的一部分)。