C# 如何在c中组织特定于项目的只读文件#

C# 如何在c中组织特定于项目的只读文件#,c#,file,organization,C#,File,Organization,我的独立smallish C#项目需要中等数量(ca 100)的(XML)文件,这些文件需要在运行时提供特定于域的值。它们不要求对用户可见。但是,我需要偶尔添加或更新它们,我准备手动执行这些操作(即,我不设想使用特定的工具,尤其是因为它们可能在系统之外创建) 我希望它们可以重新定位(即使用相对文件名)。什么样的选择我应该考虑组织他们和将是什么要求打开和阅读他们?< /P> 该项目基本上是独立的(与web服务、数据库或其他第三方应用程序无关)。它被组织成一小部分名称空间,文件的所有逻辑都可以限制在

我的独立smallish C#项目需要中等数量(ca 100)的(XML)文件,这些文件需要在运行时提供特定于域的值。它们不要求对用户可见。但是,我需要偶尔添加或更新它们,我准备手动执行这些操作(即,我不设想使用特定的工具,尤其是因为它们可能在系统之外创建)

我希望它们可以重新定位(即使用相对文件名)。什么样的选择我应该考虑组织他们和将是什么要求打开和阅读他们?< /P> 该项目基本上是独立的(与web服务、数据库或其他第三方应用程序无关)。它被组织成一小部分名称空间,文件的所有逻辑都可以限制在一个名称空间中

========= 对不起,我不清楚。我会再试一次。在Java应用程序中,可以包含相对于类路径而不是最终的*.exe读取的资源文件。我相信有一种方法可以在C#中做类似的事情

========= 我相信我应该使用一些与RESX相关的东西。请参阅(RESX文件和xml数据)。我可以将字符串放在resx文件中,但这很繁琐且容易出错,我更愿意将它们复制到适当的位置

很抱歉我不清楚,但我不太清楚该如何提问

=========
这个问题似乎非常接近()。我希望能够在VisualStudio中添加文件-我的问题是我应该将它们放在哪里,以及如何表示它们是资源?

如果将它们放在与可执行文件相关的子文件夹中,比如说
\Config
,则可以使用
File.ReadAllText(@“Config\filename.xml”)
访问它们


如果你有一个ASP.NET应用程序,你可以将它们放在特殊的
App\u Data
文件夹中,并使用
File.ReadAllText(Server.MapPath(“~/App\u Data/filename.xml”)
访问它们,我仍然不清楚你是否有Win表单或web项目。。。无论如何,不需要使用相对文件名来重新定位它们。我建议在web.config或app.config文件的appSettings部分添加一个条目,其中包含xml文件的完整路径。如果它们被移动,您所要做的就是更改配置文件

<!-- app/web.config --->
<appSettings>
        <add key="filelocation" value="c:\xmlfiles"/>
</appSettings>

//c# code (in ASP.NET app, for example)
using System.IO;
using System.Xml.Linq;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string path = ConfigurationManager.AppSettings["filelocation"];
        DirectoryInfo di = new DirectoryInfo(path);
        List<XDocument> xmlDocs = new List<XDocument>();
        foreach (FileInfo fi in di.GetFiles())
        {
            xmlDocs.Add(XDocument.Load(fi.FullName));
        }
    }
}

//c代码(例如在ASP.NET应用程序中)
使用System.IO;
使用System.Xml.Linq;
公共部分类\u默认值:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
字符串路径=ConfigurationManager.AppSettings[“文件位置”];
DirectoryInfo di=新的DirectoryInfo(路径);
List xmlDocs=新列表();
foreach(di.GetFiles()中的FileInfo-fi)
{
Add(XDocument.Load(fi.FullName));
}
}
}
当然,您可能知道也可能不知道xml文件名,因此您可能无法以完全相同的方式加载和读取它们


在您的情况下,如果您有一个ASP.NET站点(假设它永远不会在多个服务器上),那么将它们放在App_数据文件夹中似乎是完全合适的。如果您在配置文件中列出“~/App_Data”,您需要像darin在Server.MapPath()中那样将其转换为完整路径,请务必小心。

有一个详细的答案。似乎必须将该文件指定为EmbeddedResource。我还没有让它工作,但它是我想要的。

C#项目意味着很多东西——服务、web项目、win项目等。请更具体一些。谢谢-我已经尝试澄清了范围