- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
假设您在 .NET (C#) 中遇到以下情况:
namespace MyDll
{
public class MyClass
{
public string GetValue()
{
return "wrong value";
}
}
}
这段代码被编译成一个 dll,比如 MyDll.Dll。
然后您有一个名为 MyApplication.exe 的应用程序,它使用 MyDll.dll 作为引用,创建了 MyClass 类的一个实例并调用了方法 GetValue:
MyClass instance = new MyClass();
instance.GetValue();
一旦您意识到 MyClass.GetValue() 的当前实现是错误的,是否有任何方法可以像这样修复方法 MyClass.GetValue()
namespace MyDll
{
public class MyClass
{
public string GetValue()
{
return "correct value";
}
}
}
并在不重新启动 MyApplication.exe 的情况下热交换生成的 MyDll.dll???
stackoverflow 和 google 中提出的所有解决方案都无法工作,因为即使 MyDll.dll 加载到为此目的创建的新 AppDomain 上,当我卸载调用时也是如此
AppDomain.Unload(anoterAppDomainJustForMyDll);
它返回时没有错误,但是如果我尝试用更正的 MyDll.dll 覆盖原始的 MyDll.dll(而 MyApplication.exe 仍在运行),我会收到错误消息“无法覆盖,因为另一个进程正在使用 dll”。 ...
最佳答案
问题已自行关闭:请引用codeplex中的文章
对我来说,能够在不重新启动应用程序的情况下热交换新的 dll 非常重要,正如本文所建议的那样,这是可以完成的,因为这是通过应用程序本身完成的。我之前尝试失败的原因是我试图从外部覆盖目标 dll(在本例中是在资源管理器中)。但是,如果覆盖是按照建议的解决方案从应用程序本身完成的,它将按预期工作。
我需要在应用程序方面做更多的工作来定义可以部署版本化 ddl 的目录,但这对我来说是完全可以接受的。
关于c# - .NET dll 热插拔,无需重启应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25181542/
我是一名优秀的程序员,十分优秀!