c# - 无法为 ASP.NET 应用程序加载 AForge.Video.FFMPEG 当它适用于 Windows 窗体应用程序时

标签 c# asp.net .net dll aforge

我收到以下错误:

ASP.NET runtime error: Could not load file or assembly 'AForge.Video.FFMPEG.DLL' or one of its dependencies. The specified module could not be found.

我曾在一个 Windows 窗体项目中使用它,但在尝试将项目转换为 ASP.NET 项目后,我无法让它运行。我在那里使用 64 位 DLL,但现在已切换到使用 32 位 DLL,因为我似乎在这方面取得了更多进展(64 位 DLL 出现了类似的错误)。

我已经在项目属性中将平台目标设置为 x86,并且还尝试将其设置为任何 CPU(这会触发警告,因为 DLL 是 native 32 位的)并且还尝试在使用 64 位时将目标更改为 x64 DLL。

在 IIS 应用程序池中,我将“启用 32 位应用程序”设置为 true。删除这个 DLL 会导致项目正常运行,而将其重新添加则会导致项目失败。

我试过:

  1. 将 DLL 放入 System32。
  2. 将 bin 文件夹(带有 DLL)放入 PATH。
  3. 将应用程序目标设置为所有可能的选择(x86、x64、任何 CPU)。
  4. 已验证 DLL 未损坏,甚至尝试了一个由不同来源编译的 DLL。
  5. 所有 FFMPEG DLL 都在 bin 文件夹中;还尝试将它们放入 System32。

在这个项目中甚至没有使用 DLL 的代码(我在一个 Windows 窗体项目中有代码,我将合并到这个项目中,但如果引用甚至不起作用,我就不能这样做)。我什至创建了新项目,以防项目中出现一些奇怪的人工制品。

请注意,我已经阅读了几乎所有与此 DLL 和 ASP.NET 相关的 Google 搜索结果。这些方法似乎都不起作用。

最佳答案

我遇到了同样的问题。现在它工作得很好。我做了几件事。尽管我不确定实际上是哪一个使我的应用程序正常工作。

  1. 将 DLL 从“Externals\ffmpeg\bin”复制到项目的输出目录(可执行文件所在的目录);
  2. 还复制了 C:/Windows/System32 目录中的那些 .dll。
  3. 设置为 x86 目标构建(在 32 位模式下运行)。
  4. 虽然我的项目是基于framework 4.5,但我也安装了v3.5。
  5. 最后,我在 app.config 中添加了 useLegacyV2RuntimeActivationPolicy="true" -
 <?xml version="1.0" encoding="utf-8"?>
 <configuration>
   <startup useLegacyV2RuntimeActivationPolicy="true"> //useLegacyV2RuntimeActivationPolicy for older .net version
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
   </startup>    
 </configuration>

关于c# - 无法为 ASP.NET 应用程序加载 AForge.Video.FFMPEG 当它适用于 Windows 窗体应用程序时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30263358/

相关文章:

c# - 获取图像文件夹的路径

asp.net - 可以轻松与 ASP.NET 集成的最佳视频播放器?

javascript - 删除 iis 服务器上 URL 中的扩展名

asp.net - ASP.NET 如何生成 HTML5 代码?

c# - Winforms 在文本框上禁用键盘输入但保持文本框启用

.net - 进行进程内存转储并稍后在 .NET 中恢复它

c# - 如何重新编号 WordProcessingDocument 中的页面?

c# - Dictionary<TKey, TValue> 中的键是不可变的吗?

c# - System.TypeInitializationException

.net - Entity Framework 4 Single() vs First() vs FirstOrDefault()