私は現時点で脳のおならを持っています。 .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つのテンプレート/ディレクトリにコピー/貼り付けはしません)が、どのアプリケーションが特定の時間にそれを呼び出すかわからないので、ファイルパスをテンプレートフォルダにコーディングします。私はテンプレートファイルを取得しようとしているところで、小さくても批判的なものを見逃していますが、正確に何が分かりません。
テンプレートを使用している各アプリケーションの設定ファイルはどうですか? –