【发布时间】:2014-01-12 11:03:39
【问题描述】:
我使用VCProjectEngine.dll,Visual Studio 2010 和Visual Studio 2012 有两个版本。
我想替换DLL 版本动态我会卸载旧版本,然后加载新的DLL。
我从this post 了解到,我无法卸载DLL,而是卸载所有域。
所以我尝试卸载域:
AppDomainSetup domaininfo = new AppDomainSetup();
domaininfo.ApplicationBase = System.Environment.CurrentDirectory;
Evidence adevidence = AppDomain.CurrentDomain.Evidence;
AppDomain domain = AppDomain.CreateDomain("MyDomain", adevidence, domaininfo);
AppDomain.Unload(domain);
现在我尝试加载新的DLL 版本:
AppDomain.CurrentDomain.Load(new AssemblyName("Microsoft.VisualStudio.VCProjectEngine, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"));
但它没有帮助,Visual Studio 2012 不知道 VCProject 类型,因为旧版本不适合它。
我的代码有什么问题?或者也许还有其他方法可以以编程方式替换DLL?
【问题讨论】:
-
请注意,您不应为此目的使用 AppDomain.Load。看看这个关于如何在特定 AppDomain stackoverflow.com/a/17324102/850119 中加载程序集的答案。
标签: c# .net dll .net-assembly appdomain