我环顾四周,根本无法找到打开链接XML文件的方法。我的文件夹结构如下:
...\projects\ConfigService\
...\projects\Shared\
...\projects\WebTool\
在Shared文件夹中,我有一个XML文件,将由WebTool项目修改并由ConfigService读取(在每个文件构建并运行后多次)。为了使事情变得尽可能简单,我只是在每个项目的XML中尝试“添加为链接”,但是如何实际获得链接对象的完整路径以便我可以打开它?我使用链接是因为在构建项目后文件会被更改,但我不会重建。
我找到的所有答案都是尝试将链接文件打包到项目的二进制文件中,或者说明是用于添加类/代码而不仅仅是平面资源。
或者有更好的方法吗?
答案 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不要忘记看到它在文件系统(某处)上暴露,你需要处理一些有意义的个人删除或修改它。