2012-08-05 86 views
1

我使用了教程(http://support.microsoft.com/kb/837908,方法1)来生成两个项目。项目a对项目b有参考价值。在运行时加载程序集

项目:

new System.EnterpriseServices.Internal.Publish().GacRemove(string.Format(@"C:\Users\[me]\Documents\Visual Studio 2010\Projects\MyAssembly1\MyAssembly1\bin\Debug\MyAssembly1.dll")); 
new System.EnterpriseServices.Internal.Publish().GacInstall(string.Format(@"C:\Users\[me]\Documents\Visual Studio 2010\Projects\MyAssembly1\MyAssembly1\bin\Debug\MyAssembly1.dll")); 
MyAssembly1.Class1 obj1 = new MyAssembly1.Class1(); 
MessageBox.Show(obj1.HelloWorld()); 

项目B:

public string HelloWorld() 
    { 
     return "1"; 
    } 

当我执行以下操作:在项目

  1. 变 “HelloWorld” 的方法B来返回“2”(而不是o f“1”)。

  2. 建设项目B

  3. 建设项目,并运行它

我与“1”作为文本消息框,和GAC并不总是自动更新。

更新项目b并在项目a上查看它的最简单方法是什么?

+0

这似乎是错误的。您不应该在同一过程中安装到GAC。 – leppie 2012-08-05 14:37:44

+0

GacRemove()采用文件系统路径的奇怪之处。它应该有一个名称,包括版本。那么,这是一种失败模式。 – 2012-08-05 15:15:21

回答

0

首先,更改GAC不太可能有助于已经运行的进程。在此特定情况下,请注意,在执行该方法之前,每个方法都会发生JIT 之前的。这意味着MyAssembly1在删除/安装步骤之前已解析并加载。然而,这并不能改变这一事实,这不太可能是一个好方法。

相关问题