2011-08-18 1 views
12

내 프로젝트/bin/debug 폴더에 내 docx.xsl 파일이 있습니다. 필요한 경우이 파일에 액세스하려고합니다.하지만이 파일에 액세스 할 수 없습니다.Visual Studio 2010 프로젝트 폴더 내의 bin/debug 파일에 액세스하는 방법은 무엇입니까?

WordprocessingDocument wordDoc = WordprocessingDocument.Open(inputFile, true); 
MainDocumentPart mainDocPart = wordDoc.MainDocumentPart; 
XPathDocument xpathDoc = new XPathDocument(mainDocPart.GetStream()); 
XslCompiledTransform xslt = new XslCompiledTransform(); 

string xsltFile = @"\\docx.xsl"; // or @"docx.xsl"; 

xslt.Load(xsltFile); 
XmlTextWriter writer = new XmlTextWriter(outputFile, null); 
xslt.Transform(xpathDoc, null, writer); 
writer.Close(); 
wordDoc.Close(); 

것은

+0

파일을 실행 파일에 리소스로 대신 삽입하지 않는 이유는 무엇입니까? 하나의 파일 배포가 적고 경로 문제가 없습니다. – adrianm

+0

@Adrianm : 어떻게 하죠? plz 나에게 절차를 줄 수 있습니까? – Saravanan

+0

많은 코드에 덧글을 추가하므로 답변을 추가했습니다 – adrianm

답변

26

당신은 당신의 실행 파일의 위치를 ​​확인할 수 있고, 파일을 가정하는 관련에 응용 프로그램과 함께 배포 될 것입니다 ... docx.xsl 파일에 액세스 할 올바른 올바른 경로를 넣어 저를 안내하세요

012 :

string executableLocation = Path.GetDirectoryName(
    Assembly.GetExecutingAssembly().Location); 
string xslLocation = Path.Combine(executableLocation, "docx.xsl"); 

당신은 파일의 맨 위에 가져온 다음 네임 스페이스를해야 할 수도 있습니다 : 디렉토리, 다음이 당신이 디버깅 및 배포에 파일을 찾을 수 있도록해야한다

+0

오류 메시지 : - 이름 어셈블리가 컨텍스트에 존재하지 않습니다 ... 어떻게 네임 스페이스를 넣었습니까? – Saravanan

+0

관련 네임 스페이스 ... –

+0

을 사용하여 System.Reflection을 사용하여 업데이트하겠습니다. 고마워요 – Saravanan

1

Application.StartupPath은 bin/debug까지 전체 경로를 제공합니다.

그래서 당신이해야 할 것입니다 :

string xsltFile =Application.StartupPath + @"\\docx.xsl"; 
+1

죄송합니다 작동하지 않았습니다 ... – Saravanan

+0

올바른 하나 : string xsltFile = Application.StartupPath + @ "\\ docx.xsl"; 덕분에 많이 – Saravanan

7

당신이 런타임에 경로를 처리 할 필요가 없습니다 자원으로 파일을 추가합니다.

  • 파일을 Visual Studio 프로젝트에 추가하고 빌드 작업을 "포함 된 리소스"로 설정하십시오.

리소스의 이름은 프로젝트의 기본 네임 스페이스와 프로젝트의 모든 코드 파일과 같은 모든 폴더입니다.

string resourceName = "DefaultNamespace.Folder.docx.xsl"; 

같은 폴더에있는 코드는 다음이

string resourceName = string.Format("{0}.docx.xsl", this.GetType().Namespace); 
  • 는 리소스 스트림 Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)
  • 귀하의 경우에는

을 사용하여 파일을 읽을처럼 할 수 있다면, 다음과 같이 표시됩니다.

using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) 
using (var reader = XmlReader.Create(stream)) 
    xslt.Load(reader); 
+0

대단히 감사합니다 adrianm Logged – Saravanan

-1

Bin/Debug 폴더에서 파일을 액세스하려면 파일 이름 만 지정하면됩니다. 아래를 참조하십시오

xslt.Load("docx.xsl"); 
관련 문제