MS.NET和Mono

时间:2016-11-11 12:07:51

标签: c# .net mono .net-assembly

我们目前正在开发一个针对.NetFramework,Version = 4.6的C#应用​​程序。我们正在Windows上的Visual Studio中编译应用程序,但是将其部署在运行Mono的docker容器中:

Mono JIT compiler version 4.4.2 (Stable 4.4.2.11/f72fe45 Fri Jul 29 09:58:49 UTC 2016)

在这个应用程序中,我们使用Roslyn编译器动态生成代码,然后将结果加载到Assembly中(不设置Assembly元数据)。

当我们在Windows上运行此应用程序时,一切正常。我们生成代码,编译代码并加载程序集。我们可以更改代码,重新编译程序集并加载它。在Windows上,这一切都有效,加载的类型都已成功更新。

但是,转到Mono,我们看到程序集的第一次编译按预期成功加载,但是未加载对已编译程序集的后续更改,并且始终返回初始加载的程序集。

在Windows上,我们使用class A1编译代码A.加载程序集:

var a = Assembly.Load(byte[]));

然后我们从程序集中获取类型:

var t = a.GetType("A1");

然后更改代码class A1; class B1,重新编译,重新加载,我们就可以获得B1

在Mono上,我们可以获得类型A1,但是当我们想要更改为B1时,类型不存在,并且它始终将第一个已编译的程序集保留为返回。

有没有办法让Mono产生与Windows相同的结果?

0 个答案:

没有答案