Как получить доступ к файлам в bin / debug в папке проекта в Visual Studio 2010? - PullRequest
18 голосов
/ 18 августа 2011

У меня есть файл docx.xsl в папке проекта / 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 ...

Ответы [ 4 ]

37 голосов
/ 18 августа 2011

Вы можете определить местоположение вашего исполняемого файла, и, если файл будет развернут с приложением в соответствующем каталоге, то это должно помочь вам найти файл при отладке и развертывании:

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

Возможно, вам понадобятся следующие пространства имен, импортированные вверху вашего файла:

using System;
using System.IO;
using System.Reflection;
7 голосов
/ 18 августа 2011

Если вы добавляете файл в качестве ресурса, вам не нужно иметь дело с путями во время выполнения.

  • Добавьте файл в проект 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);
1 голос
/ 18 августа 2011

Application.StartupPath дает вам полный путь до bin / debug.

Итак, что вам нужно сделать, это:

string xsltFile =Application.StartupPath + @"\\docx.xsl";
0 голосов
/ 03 октября 2013

Чтобы получить доступ к файлу из папки Bin / Debug, вам нужно только указать имя файла. Смотри ниже

xslt.Load("docx.xsl");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...