使用win32 DLL部署XBAP

时间:2011-01-21 12:03:20

标签: c# c++ wpf pinvoke xbap

我的XBAP应用程序使用两个win32 dll和往常许多.Net dll一样。由于我们将.net引用添加到项目本身,这不是问题,因为它们在发布项目时都会自动部署;只是他们的名字从mydotnet.dll更改为mydotnet.dll.deploy

但问题是,win32 dll没有部署,他们的名字也没有改变。我理解其中的原因。这是因为我使用p / invoke技术调用它们,并且它们没有被添加到项目中。事实上,visual studio 2010不允许我将它们添加到参考文献中。所以我手动将它们复制到发布文件夹,并试着尝试是否有效。但它没有用。浏览器显示的错误是:

  

System.DllNotFoundException:无法执行   加载DLL'Alayer.dll':指定的   无法找到模块。 (例外   来自HRESULT:0x8007007E)

     

at Player.PlayerProxy.Initialize()
  atRunaware.WpfBrowserApp.Player.Page1.PlayFile(对象   sender,RoutedEventArgs e)

任何人都可以解释一下发生了什么吗?对此有什么解决方案吗?


以前我试图在Silverlight中做我想做的事,但是Austin建议我使用XBAP来实现同样的目的。上一主题的URL:

Handle to Silverlight UserControl

1 个答案:

答案 0 :(得分:1)

你可以尝试:

  1. 在Publish>下检查项目属性“应用程序文件”部分,如果您的原生dll出现在那里,请确保它们已设置为包含。

  2. 尝试将dll作为内容文件包含在项目中,将copy to output目录设置为Copy Always(我认为这可能会使它们出现在第1点中提到的引用列表中,允许您将它们设置为“包含”)。