2011-08-18 7 views
12

Tengo mi archivo docx.xsl en mi carpeta project/bin/debug. Ahora quiero acceder a este archivo cada vez que lo necesito. Pero no pude acceder a este archivo.¿Cómo acceder a los archivos en bin/debug dentro de la carpeta del proyecto en Visual Studio 2010?

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

favor, me guía para poner ruta válida correcta para acceder a archivos docx.xsl ...

+0

¿Por qué no incrustar el archivo en el ejecutable como recurso en su lugar? Un archivo menos para implementar y sin problemas de ruta – adrianm

+0

@Adrianm: ¿Cómo lo hago? ¿Podría darme un procedimiento? – Saravanan

+0

A mucho código para poner un comentario, así que agregué una respuesta – adrianm

Respuesta

26

Puede determinar la ubicación de su archivo ejecutable, y suponiendo que el archivo será implementado con la aplicación de la correspondiente directorio, entonces esto debería ayudar a encontrar el archivo en la depuración y en el despliegue:

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

Es posible que tenga los siguientes espacios de nombres importados en la parte superior de su archivo:

using System; 
using System.IO; 
using System.Reflection; 
+0

Mensaje de error: ¿El nombre Asamblea no existe en el contexto? ¿Cómo pongo el espacio de nombres? – Saravanan

+0

Permítanme actualizar con los espacios de nombres relevantes ... –

+0

usando System.Reflection; Muchas gracias – Saravanan

1

Application.StartupPath le ofrece la ruta completa hasta bin/depuración.

Así que lo que hay que hacer es:

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

Lo siento No funcionó ... – Saravanan

+0

El correcto es: string xsltFile = Application.StartupPath + @ "\\ docx.xsl"; Muchas gracias – Saravanan

7

Si se agrega el archivo de recursos que no es necesario para hacer frente a los caminos en tiempo de ejecución.

  • Agregue el archivo al proyecto del estudio visual y establezca la acción de compilación en "Recurso incrustado".

El nombre del recurso es el espacio de nombres predeterminado del proyecto + cualquier carpeta como cualquier archivo de código en el proyecto.

string resourceName = "DefaultNamespace.Folder.docx.xsl"; 

Si tiene el código en la misma carpeta que puede hacer como esto

string resourceName = string.Format("{0}.docx.xsl", this.GetType().Namespace); 
  • Luego de leer el archivo usando una secuencia de recursos Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)

En su caso, se vería así:

using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) 
using (var reader = XmlReader.Create(stream)) 
    xslt.Load(reader); 
+0

muchas gracias adrianm – Saravanan

-1

Para acceder al archivo desde la carpeta Bin/Debug, solo tiene que especificar el nombre del archivo. Consulte a continuación

xslt.Load("docx.xsl"); 
Cuestiones relacionadas