【发布时间】: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 配置文件的支持。