2011-08-18 4 views
12

私のプロジェクト/ bin/debug folder.Nowに自分のdocx.xslファイルがあります。私はこのファイルにアクセスする必要があるときはいつでもこのファイルにアクセスしたいのですが、私はこのファイルにアクセスできませんでした。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ファイルにアクセスするための正しい有効なパスを入れて

+0

なぜファイルを実行可能ファイルにリソースとして埋め込まないのですか? 1つのファイルの配備が少なくて済み、パスの問題はありません – adrianm

+0

@Adrianm:どうしますか?私に手続きをしてもらえますか? – Saravanan

+0

私は答えを追加したので、多くのコードにコメントを入れてください – adrianm

答えて

26

私をガイドし、ファイルは、関連するアプリケーションで展開されると仮定してください。

012:

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

あなたは、ファイルの先頭にインポートされた次の名前空間が必要になることがあります:ディレクトリが、これはデバッグにと展開にファイルを見つける必要があります

+0

エラーメッセージ: - 名前アセンブリはコンテキストに存在しません?..どのように私は名前空間を置く? – Saravanan

+0

関連する名前空間を更新してみましょう。 –

+0

using System.Reflection;ありがとうたくさん – Saravanan

1

Application.StartupPathはbin/debugまで完全なパスを提供します。

だから、あなたが何をする必要があるかです:

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

申し訳ありませんでした... – Saravanan

+0

正しいものは:string xsltFile = Application.StartupPath + @ "\\ docx.xsl";おかげで多くの – Saravanan

7

あなたが実行時のパスに対処する必要はありませんリソースとしてファイルを追加する場合。

  • ファイルをビジュアルスタジオプロジェクトに追加し、ビルドアクションを「組み込みリソース」に設定します。

リソースの名前は、プロジェクトのデフォルトネームスペース+プロジェクト内のコードファイルと同様のフォルダです。

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

-1

Bin/Debugフォルダからファイルにアクセスするには、ファイル名を指定するだけです。以下を参照

xslt.Load("docx.xsl"); 
関連する問題