如何在ASP.NET应用程序中添加对32位dll的引用

时间:2017-01-30 11:48:28

标签: c# asp.net iis-express

我尝试使用IIS Express在ASP.NET应用程序中添加对32位dll的引用。

但是有一个问题。当我启动应用程序时,它会抛出异常:

  

'无法加载文件或程序集'CppInerop.dll'或其依赖项之一。指定的模块无法找到。'

我尝试将目标平台设置为x86x64,但没有任何变化。

dll适用于控制台和win表单应用。我刚刚将任何CPU的属性target更改为x86

但它仍无法与ASP.NET一起使用。我看到了其他一些选项,当然要将所有必需的dll添加到bin中。但没有什么可以改变结果。

dll写在 C ++

此外,我使用了 fuslogvw ,但它没有记录有关此dll的任何内容。

请帮忙看看,为什么会这样。

2 个答案:

答案 0 :(得分:0)

你不能轻易做到这一点。

您可能不得不安排在进程外调用DLL。我已经完成了这样的任务。

这适用于网络请求:

1)创建一个.EXE,它提供一个合适的二进制接口,通过stdin / stdout调用DLL。 EXE反序列化参数,调用DLL函数,序列化结果并将其发送到stdout。你可能在想等待API太难了。好吧,我还没有看到API太难了。我用这种方式进行TWAIN扫描。

2)在另一个目录中安装.EXE和.DLL。找到一种方法让您的webapp找到它(在web.config中可以选择相对路径或参数)

3)在Web应用程序中实现二进制接口的另一面。启动进程,序列化请求,向进程的stdin发送请求,从进程的stdout读取结果。

答案 1 :(得分:0)

对于VS2015(和2013)您可以选择以32位或64位运行IIS Express,方法是进入Visual Studio:

Tools -> Options -> Projects and Solutions -> Web Projects 
check/uncheck "Use the 64 bit version of IIS Express for web sites and projects"

对于您的情况,您希望取消选中此选项

此外,在您的网络项目中,请确保您还在构建中定位x86平台。