在多个项目中使用资源/文件。哪条路?

时间:2018-02-14 11:39:07

标签: c# visual-studio resources

所以我有多个项目中使用的文件(在一个解决方案中)。我会选择哪种方式?

  • 嵌入式资源并与Assembly.GetManifestResourceStream一起使用
  • 将文件添加到Resources.resx并与Properties.Resources一起使用。
  • 复制到输出目录并使用已知路径阅读
  • 链接资源?

现在,文件位于解决方案根目录中的Resource-Folder中。但是这种方式没有这些文件的相对路径。

我可以将它们添加到属性/资源但是添加到哪个项目中?没有"主要"处理这些文件的项目。或者只为资源创建一个新的" ResourceHolder" - 项目?

如果我将它们添加到多个项目中,它们都是副本,而不是我所知道的原始文件/路径的链接......所以这也没有选择。

您无法在解决方案范围内添加资源吗?或者更好地拥有解决方案范围的文件夹,并且只有当项目使用文件时才将其复制到输出并且可以与相对路径一起使用?

1 个答案:

答案 0 :(得分:1)

没有解决方案范围的资源,因为解决方案本身不会产生任何工件。在我看来,放置资源的地方取决于资源的语义。

例如,如果它们是必须在多个程序集上保持一致的图标(即,位于不同程序集中的多个控件或属于一组应用程序的多个不同应用程序),那么它们在语义上是全局资源。因此,我会将它们放入一个由所有其他程序集引用的单独资源程序集中。

如果它们是刚才恰好相同的独立资源(即不同测试程序集的测试数据),那么在我看来,它们没有全局语义,应该复制到需要它们的每个项目中。这样也可以独立分发生成的程序集,因为它们之间没有进一步的依赖关系。

关于你的第三个选择:我总是试图避免直接处理文件。这仅适用于两种情况: 首先,如果文件不属于应用程序,即它们是用户数据(例如由应用程序读取和写入的文档);她的情况似乎并非如此。 其次,如果文件太大以至于重复它们会导致对磁盘空间的大量需求。您的问题并非如此情况,但在这种情况下,提供数据的中央存储库可能是可行的。