我有一个带有几个模块的WPF prism桌面应用程序。过去,我将所有本地化资源放在基础设施程序集的公共资源文件中,并在所有模块中引用它。但是最近,我开始怀疑从维护角度来看这是否确实是正确的方法。实质上,这也有点破坏了模块化。从长远来看,将模块特定的资源文件放在模块本身中是否更好?欢迎提出所有想法。
就Prism的主要目标之一——模块化而言,将资源仅放在适当的程序集中似乎是显而易见的。通过一个集中的程序集共享资源恰恰与模块化相反。 采用集中式方式会在您想要添加更多(可选)模块的时候导致另一种DLL地狱。您将不得不在没有使用该程序集的模块的情况下更新公共程序集。而确定哪个模块存在只是再次违反了模块化本身。另一种方法是始终将公共程序集更新为最新版本。 无论您做什么,遵循集中式方法都会强制您构建所有模块的向后兼容性。 这是我目前的观点。但由于我只使用Prism工作了几周,所以我不太确定我的说法是否正确。
当使用Prism时,我从不在个别模块之间建立引用(除非一个模块确实是另一个模块的增强)。我倾向于将共享资源、接口等放在一个“common”程序集中,该程序集被所有模块和包含Shell的程序集引用。然后通过IoC容器检索实现接口的内容,并将其放置在其所属的模块中。正如您所写的那样-将它们放在基础设施模块中会破坏Prism背后的一个想法。