我收到以下错误:
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 会导致项目正常运行,而将其重新添加则会导致项目失败。
我试过:
- 将 DLL 放入 System32。
- 将 bin 文件夹(带有 DLL)放入 PATH。
- 将应用程序目标设置为所有可能的选择(x86、x64、任何 CPU)。
- 已验证 DLL 未损坏,甚至尝试了一个由不同来源编译的 DLL。
- 所有 FFMPEG DLL 都在 bin 文件夹中;还尝试将它们放入 System32。
在这个项目中甚至没有使用 DLL 的代码(我在一个 Windows 窗体项目中有代码,我将合并到这个项目中,但如果引用甚至不起作用,我就不能这样做)。我什至创建了新项目,以防项目中出现一些奇怪的人工制品。
请注意,我已经阅读了几乎所有与此 DLL 和 ASP.NET 相关的 Google 搜索结果。这些方法似乎都不起作用。
最佳答案
我遇到了同样的问题。现在它工作得很好。我做了几件事。尽管我不确定实际上是哪一个使我的应用程序正常工作。
- 将 DLL 从“Externals\ffmpeg\bin”复制到项目的输出目录(可执行文件所在的目录);
- 还复制了 C:/Windows/System32 目录中的那些 .dll。
- 设置为 x86 目标构建(在 32 位模式下运行)。
- 虽然我的项目是基于framework 4.5,但我也安装了v3.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/