在两个项目之间共享XML文件?

时间:2012-08-22 18:03:51

标签: c# asp.net .net xml visual-studio-2010

我环顾四周,根本无法找到打开链接XML文件的方法。我的文件夹结构如下:

...\projects\ConfigService\
...\projects\Shared\
...\projects\WebTool\

在Shared文件夹中,我有一个XML文件,将由WebTool项目修改并由ConfigService读取(在每个文件构建并运行后多次)。为了使事情变得尽可能简单,我只是在每个项目的XML中尝试“添加为链接”,但是如何实际获得链接对象的完整路径以便我可以打开它?我使用链接是因为在构建项目后文件会被更改,但我不会重建。

我找到的所有答案都是尝试将链接文件打包到项目的二进制文件中,或者说明是用于添加类/代码而不仅仅是平面资源。

或者有更好的方法吗?

3 个答案:

答案 0 :(得分:1)

我认为您想使用app.config文件来解决此问题。这是你如何做到的。

在WebTool服务和Config服务中,添加一个app.config文件,其中包含以下文本:

<configuration>
<appSettings>
    <add key="XmlFileLocation" value="c:\folder\projects\shared\myfile.xml" />
</appSettings>
</configuration>

然后,您可以使用以下命令检索每个程序中的文件位置:

string filepath = ConfigurationManager.AppSettings["XmlFileLocation"];

您必须在项目中添加对System.Configuration的引用。

祝你好运!

答案 1 :(得分:1)

最适合他的解决方案是使用Server.MapPath()方法查找他的Shared文件夹,无论文件系统中的网站位于何处。由于它始终是[virtual-directory]\Shared,因此完美无缺,并且他不需要担心配置设置。

答案 2 :(得分:0)

两种方法 一个取决于您将如何部署。如果他们都去同一个文件夹,Mr Oded的解决方案是快速而简单的。 如果要部署到更复杂的文件夹结构,例如

MyApps
  Shared
  ConfigService
  WebTool

创建一个镜像结构,并将每个项目中的输出目录设置为相关的文件夹结构(而不​​是默认的bin \ debug bin \ release)。您可以使用来自每个工具的相对路径来抓取它,例如(.. \ MyXmlFile.xml)。

那就是说,我不喜欢上述两种情况。

还有什么共享?如果有一个dll,那么它可能应该有一个返回文件位置或内容的方法,并让它管理该位置的位置。

PS不要忘记看到它在文件系统(某处)上暴露,你需要处理一些有意义的个人删除或修改它。