在程序之间共享文件的最佳实践

时间:2010-08-05 16:30:29

标签: .net

我工作的公司希望最终从VB6升级到.Net,并希望从正确的方向开始,做正确的事。

目前,我们所有的VB6程序都在公共文件夹中相互共享文件。一团糟。路径在某些程序中是硬编码的,在其他程序中被强制为App.Path。安装我们不期望的程序会导致事务中断,并且文件将被转储到未检查的目录中。最重要的是,我们的“标准”安装位置在过去几年中发生了变化,迫使我们更新所有相互通信的软件。

这就是我们所拥有的。

我们想要的是以多种更强大的方式在程序之间共享文件的某种方式。例如,一个程序可以生成日志文件,另一个程序监视目录,通过电子邮件向我们发送更改。在程序之间共享公共文件夹位置的事实上的方法是什么?此外,确定是否实际安装了另一个程序的最佳方法是什么?如果是,它在哪里?

注册表似乎是这类信息的自然场所 - 在HKEY_LOCAL_MACHINE\SOFTWARE\Company Name\Common下的某个地方,但我知道软件越来越倾向于远离注册表。用户AppData中的共享设置文件是否是一个不错的选择?同样,像AppData\Company Name\Common\Locations.xml

其他开发者在类似情况下做了什么?

3 个答案:

答案 0 :(得分:1)

如果共享文件是源或资源,则构建一个共享程序集,然后重新使用。

要共享信息和设置,有一些选项,但它们取决于以下内容:是否将所有不同的应用程序部署到同一文件夹(是=>使用共享配置文件,在共享程序集中明确加载,因此它是只写了一次)。

  

此外,确定是否实际安装了另一个程序的最佳方法是什么?如果是,那么它在哪里?

假设您正在进行正确的安装(即MSI),那么有WMI类列出已安装的内容。

(很难对一般性问题非常具体,因为您的方法中的细节可能会对最佳解决方案产生重大影响。)

答案 1 :(得分:0)

将基于固定配置的文件路径存储为app.config

中的设置

答案 2 :(得分:0)

如果您真的想要,可以跟踪数据库中的所有内容。只有应用程序和管理员才能使用它来了解其他应用程序和共享组件的情况。 您可以期望每个应用程序在何时运行哪个版本来更新管理数据库。

跟踪设置所做的是另一个问题。每个自定义组件可能更容易更新公共数据库的位置,版本以及登录用户的位置。