如何访问Visual studio 2010中项目文件夹中的bin/debug文件?
问题描述:
我有我的docx.xsl文件在我的项目/斌/调试folder.Now我想访问这个文件,只要我需要。但我无法访问此文件。如何访问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();
请指导我把正确的有效路径访问docx.xsl文件...
答
你可以决定你的可执行文件的位置,并假设该文件将与应用程序相关的部署目录,那么这应该可以帮助您查找文件中的调试和部署:
string executableLocation = Path.GetDirectoryName(
Assembly.GetExecutingAssembly().Location);
string xslLocation = Path.Combine(executableLocation, "docx.xsl");
您可能需要在你的文件的顶部输入下面的命名空间:
using System;
using System.IO;
using System.Reflection;
答
如果添加的文件作为资源你不需要处理在运行时路径。
- 将文件添加到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);
+0
非常感谢adrianm – Saravanan
答
为了从Bin/Debug文件夹访问文件,只需指定文件名。见下面
xslt.Load("docx.xsl");
为什么不把文件嵌入到可执行文件中作为资源呢?一个文件少部署,无路径麻烦 – adrianm
@Adrianm:我该怎么做?你可以给我一个程序吗? – Saravanan
要在很多代码放置评论,所以我添加了一个答案 – adrianm