【问题标题】:dlls missing after publishing .NET Web发布 .NET Web 后缺少 dll
【发布时间】:2018-11-08 09:01:15
【问题描述】:

我的网络项目使用.NET Framework 4.7.2 并使用一些参考,例如

  • System.IO
  • System.Net
  • System.Net.Http
  • System.Net.Http.Formatting

我的项目在本地运行良好。 但是,当我在目标目录(在线)上发布我的 Web 项目时,查看它在 /bin/ 中包含的内容:

  • System.IO 不见了
  • System.Net 存在
  • System.Net.Http 不见了
  • System.Net.Http.Formatting在场

因此,当我使用我的网站时,我得到了明显的错误Could not load file or assembly 'System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

所有引用在Properties 中都有Copy Local = True,但某些dll 总是被忽略。如果我将 dll 从本地目录复制到目标目录,我会收到错误 Server Error in '/' Application. Cannot load a reference assembly for execution. Exception Details: System.BadImageFormatException: Cannot load a reference assembly for execution. Exactly the same problem as this one. 但是删除/重建解决方案或添加编译选项解决方案对我不起作用

我需要怎么做才能将这些丢失的 dll 放到目标文件夹中?

【问题讨论】:

  • 检查你的 nuget 清单
  • 是吗? System.IOSystem.Net.Http 软件包已安装
  • 这是一个项目还是单独的项目?如果说你有 web 应用程序,然后为数据、模型等单独的项目,它们之间可能存在参考差异
  • 一个使用双项目的解决方案。一个dll的.NET Web+源码(不使用System.Net.Http,而是使用System.IO
  • 我们最近遇到了类似的问题,这是由于一个项目与另一个项目引用的 dll 版本不同

标签: c# asp.net .net


【解决方案1】:

转到 VS 上的解决方案资源管理器,打开引用树,右键单击库(dll)并在菜单上选择属性。在属性框中 Copy Local 应该是 True

【讨论】:

  • 如原帖所示,已完成。所有引用都有Copy Local = True 但它不起作用。
  • System.IOSystem.Net.Http 软件包与最新版本一起安装
  • 您的其中一个 dll 未更新,这会导致问题。请确保所有库都已更新。不兼容的库在调试模式下工作正常但在发布模式下出错是很常见的。当您发布时,您通常处于发布模式。见此链接:docs.microsoft.com/en-us/dotnet/api/…
  • 还要确保库与您使用的 .net 版本兼容。
  • 在本地工作。 .NET Framework 版本可以在发布后更改吗?
猜你喜欢
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多