C#에서 프로젝트 별 읽기 전용 파일을 어떻게 구성해야합니까?

StackOverflow https://stackoverflow.com/questions/1205872

  •  05-07-2019
  •  | 
  •  

문제

독립형 Smallish C# 프로젝트에는 런타임에 도메인 별 값을 제공하는 데 필요한 (XML) 파일의 중간 숫자 (CA 100)가 필요합니다. 사용자에게는 보이지 않아도됩니다. 그러나 수동으로 수행 할 준비가되어있는 경우에 추가하거나 때때로 업데이트해야합니다 (즉, 특히 시스템 외부에서 생성 될 수있는 특정 도구를 구상하지 않습니다).

나는 그들이 재배치 할 수 있기를 바랍니다 (즉, 상대 파일 이름을 사용하기 위해). 조직을 구성하기 위해 어떤 옵션을 고려해야하며, 개방하고 읽는 데 필요한 전화는 무엇입니까?

이 프로젝트는 본질적으로 독립형입니다 (웹 서비스, 데이터베이스 또는 기타 타사 응용 프로그램과 관련이 없습니다). 소수의 네임 스페이스로 구성되며 파일의 모든 논리는 단일 네임 스페이스에 국한 될 수 있습니다.

========= 분명하지 않아서 죄송합니다. 다시하겠다. Java 응용 프로그램에는 Final *.exe가 아닌 클래스 경로에 비해 읽는 리소스 파일을 포함시킬 수 있습니다. C#에서 비슷한 일을하는 방법이 있다고 생각합니다.

========== resx와 관련된 일을 사용해야한다고 생각합니다. (Resx 파일 및 XML 데이터를 참조하십시오 https://stackoverflow.com/posts/1205872/edit). Resx 파일에 문자열을 넣을 수 있지만 지루하고 오류가 발생하기 쉬우 며 적절한 위치에 복사하는 것이 좋습니다.

불분명하게해서 미안하지만, 어떻게 질문을 해야할지 잘 모르겠습니다.

========= 질문은 매우 가까운 것으로 보입니다 (c# getClassLoader ()의 동등한). VisureStudio에서 파일을 추가 할 수 있기를 원합니다. 내 질문은 어디에 넣고 자원이라는 것을 어떻게 표시합니까?

도움이 되었습니까?

해결책 3

자세한 답변이 있습니다 http://www.attilan.com/2006/08/accessing_embedded_resources_u.php. 파일은 임베디드 레저스로 지정되어야합니다. 나는 이것을 아직 작동하지 않았지만 그것이 내가 원하는 것입니다.

다른 팁

실행 파일과 관련하여 하위 폴더에 넣으면 .\Config 당신은 그들과 함께 액세스 할 수있을 것입니다 File.ReadAllText(@"Config\filename.xml").

ASP.NET 애플리케이션이있는 경우 특별한 내부에 넣을 수 있습니다. App_Data 폴더와 함께 액세스하십시오 File.ReadAllText(Server.MapPath("~/App_Data/filename.xml"))

나는 당신이 승리 양식인지 웹 프로젝트를 가지고 있는지 여전히 확실하지 않습니다. XML 파일의 전체 경로가 포함 된 web.config 또는 app.config 파일의 AppSettings 섹션에 항목을 추가하는 것이 좋습니다. 이동하면 구성 파일을 변경하기 만하면됩니다.

<!-- 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));
        }
    }
}

물론 XML 파일 이름을 알거나 알지 못할 수도 있거나 동일한 방식으로로드하여 읽을 수 없습니다.

귀하의 경우 ASP.NET 사이트가있는 경우 APP_DATA 폴더에 넣는 것이 완전히 적절 해 보입니다 (둘 이상의 서버에 없을 것이라고 가정). 구성 파일에 "~/app_data"를 나열하면 Darin이 Server.mappath ()와 같이 전체 경로로 변환하는 것이 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top