2011-06-22 11 views
0

私は現時点で脳のおならを持っています。 .NET Webサイトのクラスライブラリによって読み込まれる一連のファイルがあります。問題はファイルが3つの異なるサイトで使用されていることです(すべてのサイトがクラスライブラリを参照しています)ので、3つのファイルすべてをコピーしたくありません。クラスライブラリのフォルダからファイルを読み取る

ClassLib 
    \Templates 
    -file1.xml 
    -file2.pdf 
    -MyClass.cs 

とTemplatesディレクトリからファイルをMyClassのを読んだことがある:私は何をしたい、共有リソースとしてクラスライブラリ自体にフォルダを持っている。このようなものです。 MyClass.csがページから呼び出されていることを除いて、簡単に言えば、Default.aspxという名前にしておきましょう。

IList<string> files = GetTemplateFiles(); // returns the path to the template files e.g. Templates/file1.xml 
foreach (string file in files) { 
    if (File.Exists(file)) { 
     // do things here... 
    } 
} 

File.Existsはそれが(C:\Projects\Shared\MyLib\のようなものである)CLASSLIBへのパスをデフォルトのディレクトリに見ているとされていない一見ので、常に偽です:今MyClass.csは、次のようなコードを持っています。今、私はAppDomain.CurrentDomain.BaseDirectoryを使用することができません。これは、これを呼び出すWebサイトによって異なるためです。テンプレートは常にでなければなりません。呼び出し元のアプリケーションではなく、クラスライブラリのTemplatesディレクトリから入手できます。 Assembly.GetExecutingAssembly()のプロパティは、ASP.NETテンポラリファイルを指していてもあまり役に立ちません。

基本的に私の質問は、これを処理する最善の方法です。テンプレートファイルは、すべてのアプリケーションで使用可能な共有リソースである必要があります(各アプリケーションの3つのテンプレート/ディレクトリにコピー/貼り付けはしません)が、どのアプリケーションが特定の時間にそれを呼び出すかわからないので、ファイルパスをテンプレートフォルダにコーディングします。私はテンプレートファイルを取得しようとしているところで、小さくても批判的なものを見逃していますが、正確に何が分かりません。

+2

テンプレートを使用している各アプリケーションの設定ファイルはどうですか? –

答えて

1

3つのサイトすべてで使用可能な共通の共有パスを決定し、web.configファイルでそのパスを定義し、IISがその共有フォルダにアクセスできることを確認します。

+0

もちろん、設定ファイル!私は単純なことを忘れていることを知っていた! –

+1

あなたはそれを自分で言った。 "私は現時点で脳のおならを持っています"。それは、SOが時々あるのです。 –

+0

:)幸せに助けてください:) –

関連する問題