0

我有一个解决方案,它有一个引用一些第三方 .Net 程序集的类库。这些第三方程序集依赖于非 .Net 程序集。非 .Net 程序集不会复制到 bin 文件夹,这会导致错误“无法加载 xxx 程序集或其依赖项之一”。所以我创建了一个预构建事件将它们复制到 bin 文件夹中,这解决了问题。

然后,当我从同一个解决方案中的控制台项目引用我的项目时,我得到了同样的错误,所以我对控制台项目中的预构建事件做了同样的事情。再次,这解决了问题。

现在,当我在同一解决方案中从 MVC 应用程序引用类库项目时,我得到了同样的错误。但是使用在其他两种情况下工作的相同预构建事件并不能解决 Web 应用程序的问题。我试过同时使用开发服务器和 IIS,但得到了同样的错误。我还尝试在 Global.asax 的 Application_Start() 中向 AssemblyResolve 添加一个处理程序,以查看发生了什么,但它没有触发。

我是否需要将文件放在 web 应用程序的 bin 目录以外的地方?

赢 7、IIS 7、VS 2010、.Net 4、MVC 3

4

1 回答 1

1

这在 ASP.NET 中不起作用的原因是因为在 ASP.NET 中托管程序集将影子复制到临时文件夹中,因此在运行时无法找到非托管库。要找到它们,它们需要存在于作为 PATH 环境变量一部分的文件夹中。或者将它们放在c:\windows\System32\Inetsrv文件夹中。

于 2012-04-09T07:01:31.787 回答