在另一个c#winform中添加c#windows exe作为参考是否正确?

我有c#winform应用程序。 我可以在另一个winform应用程序中添加此exe作为参考。

它像dll类型一样工作得很好。

截至目前,我没有看到任何问题。 在这种情况下我是否需要考虑任何问题。

是的,这很好。 CLR实际上并不关心文件扩展名,添加引用时IDE也不关心。

CLR知道的所有内容都是程序集的显示名称 。 换句话说,当它被要求寻找一个组件时,它首先按全名。 例如:

ClassLibrary1, Version=1.2.3.4, Culture=neutral, PublicKeyToken=b77a5c561934e089 

它首先在GAC中查找显示名称(ClassLibrary1),版本和令牌的完全匹配。 如果做不到这一点,它会在程序的探测路径中寻找文件。 只是“ClassLibrary1”。 请注意,根本没有指定文件扩展名。 它将首先尝试查找“ClassLibrary1.EXE”。 如果失败了,它接下来会尝试找到“ClassLibrary1.DLL”。没有尝试进一步的扩展。你可以看到这是用Fuslogvw.exe btw完成的。

请注意,这种方法存在一个令人讨厌的问题,DLL不能与EXE具有相同的文件名。 当要求解析DLL程序集时,CLR将加载EXE。 那当然是kaboom。 一个难以发现的问题。 它首先寻找EXE而不是最后一个是奇怪的。

所以,没有什么可担心的。 只需将.exe重命名为.dll即可。