【问题标题】:Understanding .NET Assembly Reference Differences了解 .NET 程序集引用差异
【发布时间】:2013-05-12 11:55:58
【问题描述】:

我有两个几乎相同的 DLLS(用于同一个开源项目)——一个是预编译的,一个是由我自己的编译器(Xamarin Studio/Mono)在本地编译的。

我编译的 DLL 不适用于应该使用它的应用程序(而预构建的应用程序可以),所以我抓起一个反编译器,看看我是否可以追踪任何差异(文件大小略有不同):

我怀疑参考差异可能是问题所在。 TOP 一个是手动编译的 dll。我该如何解决这个问题并使引用与底部 dll 相同?我已经尝试在设置中使用 Mono/.NET 3.5 选项,但它导致在一堆地方抱怨 默认参数说明符 的错误,所以它似乎是 意味着 使用 4.0 编译。以下是构建设置选项的上限(仅 Mono/.NET 4.0 选项有效):

是什么导致了程序集引用的差异?

【问题讨论】:

    标签: c# .net mono monodevelop xamarin-studio


    【解决方案1】:

    Microsoft 在其 C# 编译器中引入了多目标功能,以便 C# 4/5 编译器 (csc.exe) 可以生成与 .NET 2.0/3.0/3.5 兼容的程序集。这就是预编译程序集的来源。

    不幸的是,对于 MonoDevelop 来说,这是一个长期存在的问题,它不支持这种多目标。例如,您不能选择 Mono/.NET 3.5 并期望 Xamarin Studio/MonoDevelop 使用最新的 mcs 编译器。它始终使用 .NET 3.5 配置文件,如果您使用任何 C# 4/5 语法,则无法编译。

    您可以尝试在终端使用 xbuild 进行编译,因为 xbuild 确实支持多目标。但是,您可能会遇到 xbuild 问题,因为它还不如 MSBuild。

    【讨论】:

      猜你喜欢
      • 2011-07-05
      • 1970-01-01
      • 2016-06-22
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2012-04-23
      相关资源
      最近更新 更多