2009-11-17 6 views
7

私は、ユーザーを指定したXMLファイルを読み込み、XSLT変換を実行して結果を出力するシンプルなC#Console Appを持っています。XSLTファイルを.NETプロジェクトに埋め込み、出力.exeに含めるにはどうすればいいですか?

私は自分のアプリをユーザーに配布するときに、1つの.EXEファイルを配布したいと思います。私のソースコードは、.csprojファイル、.csコードファイル、および.xsltスタイルシートの3つのファイルで構成されています。

.xsltが出力に埋め込まれ、エンドユーザーが表示または変更できないように、どのようにしてcsprojを設定できますか?

私は簡単ですが、私はそれを理解することができず、Googleはそれほど有用ではありません。

答えて

13

アセンブリに組み込むことができます。

ファイルをソリューションに追加するには、ビルドアクションを埋め込みリソースに設定します。

ファイルを読む必要がある場所は、http://msdn.microsoft.com/en-us/library/xc4235zt.aspx Assembly.GetManifestResourceStreamを使用すると、ファイルに書き込んだり直接使用したりできるストリームが得られます。

リソースの名前が不明な場合は、Assembly.GetManifestResourceNamesがすべてのリソースを表示するのに便利です。

+0

+1:まったく正しい。 –

29

ファイルをプロジェクトに追加し、ファイルを選択して[プロパティ]ウィンドウ(F4)に移動します。ビルドアクションを「組み込みリソース」に設定します。これにより、ファイルがリソースとしてexeファイルに埋め込まれます。

using(Stream strm = Assembly.GetExecutingAssembly().GetManifestResourceStream("YourAssemblyName.filename.xslt")) 
using (XmlReader reader = XmlReader.Create(strm)) 
{ 
    XslTransform transform = new XslTransform(); 
    transform.Load(reader); 
    // use the XslTransform object 
} 
+1

Fredrikの例を補うには、アプリケーションのネームスペースを 'YourAssemblyName 'として使用することができます(' ... GetManifestResourceStream( "This.is.my.namespace.filename.xslt")) ' – user1585514

関連する問題