2012-04-08 116 views
0

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

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

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

我需要将文件放在Web应用程序的bin目录以外的其他位置吗?

的Win 7,IIS 7,VS 2010,.NET 4中,MVC 3

回答

1

这并不在ASP.NET工作的原因是因为在ASP.NET中的临时文件夹管理组件get shadow copied所以在运行时无法找到非托管库。为了找到它们,它们需要存在于作为PATH环境变量一部分的文件夹中。或者将它们放在c:\windows\System32\Inetsrv文件夹中。