Как получить доступ к файлам в bin/debug в папке проекта в Visual Studio 2010?
У меня есть файл docx.xsl в моей папке project/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...
Ответы
Ответ 1
Вы можете определить местоположение вашего исполняемого файла и предполагать, что файл будет развернут с приложением в соответствующем каталоге, тогда это поможет вам найти файл в отладке и развертывании:
string executableLocation = Path.GetDirectoryName(
Assembly.GetExecutingAssembly().Location);
string xslLocation = Path.Combine(executableLocation, "docx.xsl");
Возможно, вам понадобятся следующие пространства имен, импортированные в верхней части файла:
using System;
using System.IO;
using System.Reflection;
Ответ 2
Если вы добавите файл в качестве ресурса, вам не нужно иметь дело с путями во время выполнения.
- Добавьте файл в проект 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);
Ответ 3
Application.StartupPath
предоставляет полный путь до bin/debug.
Итак, что вам нужно сделать:
string xsltFile =Application.StartupPath + @"\\docx.xsl";
Ответ 4
Для доступа к файлу из папки Bin/Debug вам нужно указать имя файла. См. Ниже
xslt.Load("docx.xsl");