繁体   English   中英

仅在发布之后:将DLL添加到ASP.Net空Web应用程序生成的文件无法加载文件或程序集“名称”或其依赖项之一

[英]Only after publishing: adding DLLs to ASP.Net Empty Web Application generates could not load file or assembly 'Name' or one of its dependencies

我的开发计算机具有Windows 7 Ultimate x64。 我们使用VS2010。 我使用asp.net开发服务器进行调试。 我们使用C#。

我们的远程服务器具有Windows Web Server 2008 R2 x64和IIS 7.5

我实质上创建了一个“ ASP.Net空Web应用程序”并添加了新的Webform Default.aspx,以便可以看到一些内容。 我在笔记本电脑上构建并运行,然后看到Default.aspx。 然后,我发布到本地文件夹,然后复制到远程服务器。 我也可以远程访问Default.aspx。 一切都按预期进行。

然后,我添加对3个DLL的引用并进行构建。 在本地运行时,可以看到Default.aspx。 然后,我发布到本地文件夹并复制到服务器。 尝试远程查看Default.aspx时,出现错误: 无法加载文件或程序集“ DLL名称(不带DLL扩展名)”或其依赖项之一。 试图加载格式错误的程序。

我到处搜索并尝试了大多数建议:

  • 我将平台目标从“任何CPU”更改为“ x64”。
  • 我将应用程序池更改为集成和经典(v4.0)。
  • 在应用程序池中,我将32位应用程序启用为true和false。
  • 我将Network Service IIS_IUSRS添加到远程服务器中的Bin文件夹中。
  • 我发表在《调试和发布》中。

唯一有效的方法是从远程文件夹中的Bin中删除DLL。 然后,我可以远程看到Default.aspx。 看来错误是当我将它们添加为参考时。

关于DLL:我是几年前在VS2005或VS2008中创建的(不确定),我不知道它们是否在VS2008的较新版本中重建。 但是我也尝试使用VS2008(带有框架3.5)和VS22010(也带有3.5)创建一个“ ASP.Net Web应用程序”。 当我尝试添加引用时,它向我发出警告:“此程序集是由比当前加载的运行时新的运行时构建的,无法加载。”

这似乎很像我遇到的问题,我在这篇文章中对此进行了详细介绍:

IIS7不会加载C ++ CLI DLL,但前提是要使用比VS2008更新的任何东西构建

基本上,Windows Web Server中缺少C ++可再发行软件包。 至少对我来说就是这种情况。

在将应用程序部署到的远程Windows服务器上安装x86和x64 VS2010 C ++可再发行组件包,并查看是否有帮助。

如果仍然无法解决问题,请使用“ DependencyWalker”程序检查DLL可能还需要什么。 DependencyWalker确实显示出假阴性,但它应该为您指明正确的方向。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM