Подтвердить что ты не робот

Как получить доступ к файлам в 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...

4b9b3361

Ответ 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");