重命名程序集时,“定位程序集的清单定义与程序集引用不匹配”

时间:2012-09-12 09:23:22

标签: .net manifest assemblybinding

我有一个包含此内容的MyApp.exe.config:

<section name="keys" type="MyApp.KeysSection, MyApp" />

这可以按预期工作。但是,当我将MyApp.exe重命名为MyApp.renamed.exe,并将配置文件重命名为MyApp.renamed.exe.config时,我得到一个例外:“无法加载文件或程序集'MyApp'或其依赖项之一。系统找不到指定的文件“。

好的,所以这一定是因为配置文件仍在引用MyApp程序集。所以我把它更新为:

<section name="keys" type="MyApp.KeysSection, MyApp.renamed" />

当我运行应用程序时,我得到一个新的异常:“找到的程序集的清单定义与程序集引用不匹配”。

我理解上述消息的含义,但这是否意味着我无法在不生成新的清单文件的情况下重命名我的程序集?理想情况下,我希望能够重命名我的程序集,并使其仍然有效。这是因为该应用程序有各种“风味”,我想使用MyApp.Flavour1.exe,MyApp.Flavour2.exe等文件名,但如果没有为每种风格生成不同的清单和配置文件,这将无法工作,原样。

我要问的是,是否有办法创建我的程序集,以便重命名文件不会导致它抛出此异常。

1 个答案:

答案 0 :(得分:3)

不幸的是,您无法以这种方式重命名程序集。有关详细信息,请参阅Loading renamed C# assembly throws FileNotFoundException

相反,您可能希望创建包含相同或类似文件的不同项目,或将公共文件移动到单独的程序集,并使不同的“flavor”程序集引用公共程序集。