4

我无法在 Linqpad 的另一个应用程序域中执行代码:


void Main()
{
AppDomain.CreateDomain("AD").DoCallBack(() => { Console.WriteLine("Test"); });
}

每次执行代码时,我都会得到一个不同的文件未找到异常:

无法加载文件或程序集“query_gclnfu,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。

无法加载文件或程序集“query_blixbs,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。

我一无所知...

4

1 回答 1

5

LINQPad 通过简单的沙盒 API 在应用程序域中运行您的代码,这意味着如果您使用 AppDomain.CreateDomain 创建域,您将遇到权限问题。

LINQPad 提供了一种帮助方法来创建具有正确权限和程序集解析处理程序设置的应用程序域:

Util.CreateAppDomain ("AD").DoCallBack(() => { Console.WriteLine("Test"); });

这将毫无错误地运行,尽管您不会在输出窗口中看到“测试”,因为新的应用程序域不会重定向其控制台输出。但是,以下将起作用:

Util.CreateAppDomain ("AD").DoCallBack(() => MessageBox.Show ("test"));
于 2010-12-03T09:59:28.677 回答