“程序集的清单定义与程序集引用不匹配”程序集更名时

问题描述:

我会尽量保持简单。“程序集的清单定义与程序集引用不匹配”程序集更名时

我有一个包含这一个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等但这不会不产生不同的清单和配置文件,针对每种口味工作,就这样。

我问的是什么,是是否有创建我的组件,使得重命名文件不会导致它抛出此异常的方法。

问候, 尼克

+0

将KeysSection类型移动到单独的类库项目中。 –

+0

你的意思是一个单独的类库项目,其名称不应该改变? –

不幸的是,你不能用这种方式重命名的程序集。有关更多信息,请参阅Loading renamed C# assembly throws FileNotFoundException

相反,您可能希望创建含有相同或相似的文件或移动共同文件,以一个单独的程序,并有不同的“味道”组件引用通用装配不同的项目。