【问题标题】:The assembly mscorlib.dll was not found or could not be loaded未找到或无法加载程序集 mscorlib.dll
【发布时间】:2014-05-13 08:46:38
【问题描述】:

首先,我见过this question,虽然问题看起来很相似,但其实不一样。

我正在运行一个精简的单声道,使用 ./configure --with-profile4=yes --with-profile4_5=no 在没有 4.5 配置文件的情况下构建。

我有一个针对 .NET 4.0 的应用程序,使用 mono 的 xbuild 构建。当我针对精简后的单声道安装运行它时,出现此错误:

The assembly mscorlib.dll was not found or could not be loaded. It should have been installed in the `/opt/my-app/mono/lib/mono/4.5/mscorlib.dll' directory.

现在,我不仅仅引用 4.0 程序集 - 没有任何来自 4.5 的 AFAICS。

为什么我会收到此错误?

我不确定它是否相关,但在使用 xbuild 构建时会收到此警告(但在使用 msbuild 构建时不会收到此警告,尽管我在运行修剪后的单声道时仍然会收到 mscorlib.dll):

warning CS1685: The predefined type `System.Runtime.CompilerServices.ExtensionAttribute' is defined multiple times.
Using definition from `mscorlib.dll' 

我也不确定这是否相关,但构建机器确实安装了 .NET 4.5。

【问题讨论】:

  • 您正在使用错误的参考程序集构建您的应用程序,使用它们的 4.5 版本而不是您需要的 4.0 版本。关于 ExtensionAttribute 的警告高度相关,它在 4.5 中从 System.Core 移至 mscorlib。否则很不清楚这是怎么发生的,也许这个“精简”的版本太精简了。
  • 我已经进行了四次检查,并且我在项目中以 .NET 4.0 为目标,所有对 .NET DLL 的引用都来自 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0。在这个阶段,我从 Mono 中删除的唯一内容是对 4.5 配置文件的支持。

标签: .net mono mscorlib xbuild


【解决方案1】:

我想通了 - 我需要将 MONO_PATH 设置为:

/opt/my-app/mono/lib/mono/4.0:/opt/my-app/mono/lib/mono/3.5:/opt/my-app/mono/lib/mono/2.0:.

所以我需要告诉它在哪里寻找图书馆;我曾(错误地)假设这会根据单声道可执行文件的位置自动进行。

【讨论】:

  • 对于那些在 3.4 版本中遇到此问题的用户,请参阅 stackoverflow.com/questions/22285830/…
  • @natli 我的问题是 3.4.0。根据您的answer,我已经在重新创建 tarball 中缺少的文件,但仍然出现此错误
  • 您是否正确创建了文件?在您对我的回答者的评论中,您说我的 echo 命令中有“怪异”,但这就是文件内容的外观。我刚才在 4 台服务器上安装了 mono 3.4,使用我的答案中的命令,它工作正常。所以如果你正确地创建了文件,那就很奇怪了;/
  • @natli 查看我的评论 - 这不是文件的内容应该如何工作!我猜您在粘贴到 SO 时遇到了某种复制和粘贴错误,并且您的实际文件的内容是正确的
  • 我的假定缺少 4.5 (--with-profile4_5=no)。我的问题是针对 4.0 的应用程序出现此错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-16
  • 2012-01-13
  • 1970-01-01
  • 2021-12-07
  • 2020-08-17
相关资源
最近更新 更多