gpt4 book ai didi

c# - 如何创建应用程序域并在其中运行我的应用程序?

转载 作者:IT王子 更新时间:2023-10-29 04:26:33 28 4
gpt4 key购买 nike

我需要创建一个自定义应用程序域来解决 .NET 运行时的 default behavior 中的错误。 .我在网上看到的示例代码都没有帮助,因为我不知道将它放在哪里,或者它需要在我的 Main() 方法中替换什么。

最佳答案

可能应该注意的是,创建 AppDomains只是绕过一些可以用常量字符串修复的东西可能是错误的方法。如果您尝试执行与您注意到的链接相同的操作,您可以这样做:

var configFile = Assembly.GetExecutingAssembly().Location + ".config";
if (!File.Exists(configFile))
throw new Exception("do your worst!");

递归入口点 :o)

static void Main(string[] args)
{
if (AppDomain.CurrentDomain.IsDefaultAppDomain())
{
Console.WriteLine(AppDomain.CurrentDomain.FriendlyName);

var currentAssembly = Assembly.GetExecutingAssembly();
var otherDomain = AppDomain.CreateDomain("other domain");
var ret = otherDomain.ExecuteAssemblyByName(currentAssembly.FullName, args);

Environment.ExitCode = ret;
return;
}

Console.WriteLine(AppDomain.CurrentDomain.FriendlyName);
Console.WriteLine("Hello");
}

使用非静态辅助入口点和 MarshalByRefObject 的快速示例...

class Program
{
static AppDomain otherDomain;

static void Main(string[] args)
{
otherDomain = AppDomain.CreateDomain("other domain");

var otherType = typeof(OtherProgram);
var obj = otherDomain.CreateInstanceAndUnwrap(
otherType.Assembly.FullName,
otherType.FullName) as OtherProgram;

args = new[] { "hello", "world" };
Console.WriteLine(AppDomain.CurrentDomain.FriendlyName);
obj.Main(args);
}
}

public class OtherProgram : MarshalByRefObject
{
public void Main(string[] args)
{
Console.WriteLine(AppDomain.CurrentDomain.FriendlyName);
foreach (var item in args)
Console.WriteLine(item);
}
}

关于c# - 如何创建应用程序域并在其中运行我的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2648411/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com