我能否在Mono CSharpRepl中重新加载程序集?

4
所以我来自Python背景,开始接触Mac上的C#和Mono。我最近发现了Mono CSharpRepl工具,想要使用它来实现与Python类似的工作流程,其中包括在修复Python代码中的错误时重复调用“reload(module)”。Mono的CSharpRepl是否具有类似的功能?目前,我只能退出、重新启动,然后再次调用“LoadAssembly()”和“using”语句,这很麻烦。
2个回答

5
$ csharp 
Mono C# Shell, type "help;" for help

Enter statements below.
csharp> var dom = AppDomain.CreateDomain("tmp");
csharp> dom.Load("System.Core");
System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
csharp> AppDomain.Unload(dom);
csharp>  

我想这会做你想要的事情,我猜。

我可以处理这个问题,但是我尝试加载自己的程序集时,C# 返回了一个 System.IO.FileNotFoundException 错误。然后我尝试将 System.Collections 加载到 dom 中,但是我得到了相同的错误。到目前为止,我只能加载 System.Core。有什么建议吗? - spade78
似乎C# Nutshell书籍涵盖了AppDomain。我想我知道为什么会出现System.IO.FileNotFoundException。将继续阅读并解决它。 - spade78
@spae:干杯!你也可以使用 AppDomain.AssemblyResolve MSDN 来解决绑定问题。对于 Java 程序员、Python 程序员等来说,这都是众所周知的领域。 - sehe

1

我担心这可能有些棘手,.Net没有除了丢弃整个AppDomain之外卸载程序集的方法 - 这可能比重新启动CSharpRepl还要困难。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接