【发布时间】:2012-01-06 19:07:29
【问题描述】:
我有一个应用程序 (app1) 可以像这样加载另一个应用程序 (app2):
this._appDomain.ExecuteAssembly(assemblyName);
执行该行时出现此错误:
无法加载文件或程序集 Foo...
App2 引用了 Foo。如果我在 app1 中添加对 Foo 的引用,它会起作用。问题是我不希望 app1 引用 Foo。 App1 的主要目的是在网络共享上检测 app2 的新版本,卸载 app2,复制新的二进制文件,然后使用上面的行再次启动 app2。之后,如果 app1 中有旧的 Foo ,那么 app2 将在它自己的运行目录中使用它而不是 Foo。
我怎样才能使只有 app2 引用 Foo,而 app1 仍会加载 app2 而不会出现该错误?
注意:我正在使用卷影复制,当 app1 引用 Foo 时它正在工作。
appDomainSetup.ShadowCopyFiles = "true";
【问题讨论】:
-
不,Foo 是我自己的 app2 需要的程序集。 Foo 会随着 app2 的发展而变化,我不希望 app1 运行文件夹中有陈旧的 Foo。
-
我的错误 - 我的意思是:将 Foo 嵌入到 app2 中,这样可以解决问题,而无需在运行文件夹中的任何位置将 Foo 作为单独的文件,因此 Foo 永远不会过时......
-
啊,有道理,但我也做不到。其他项目参考 Foo。我认为下面 Mikael 提供的链接会起作用。
标签: c# appdomain shadow-copy