如何在Visual Studio 2010中的项目文件夹中访问bin / debug中的文件?

时间:2011-08-18 09:30:15

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

我的project / bin / debug文件夹中有docx.xsl文件。现在我想在需要时访问此文件。但我无法访问此文件。

 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();

请指导我输入正确的有效路径来访问docx.xsl文件...

4 个答案:

答案 0 :(得分:36)

您可以确定可执行文件的位置,并假设该文件将随应用程序一起部署到相关目录,那么这应该可以帮助您在调试和部署中找到该文件:

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

您可能需要在文件顶部导入以下命名空间:

using System;
using System.IO;
using System.Reflection;

答案 1 :(得分:7)

如果将文件添加为资源,则无需在运行时处理路径。

  • 将文件添加到visual studio项目,并将构建操作设置为“Embedded Resource”。

资源的名称是项目默认名称空间+任何文件夹,就像项目中的任何代码文件一样。

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

答案 2 :(得分:1)

Application.StartupPath为您提供bin / debug的完整路径。

所以你需要做的是:

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

答案 3 :(得分:-3)

要从Bin / Debug文件夹访问文件,您只需指定文件名。见下文

xslt.Load("docx.xsl");