0

クラス ライブラリ アセンブリ B を参照する Winforms プロジェクト A があります。アセンブリ B には、Build Action = NoneおよびCopy to Output Directory = True に設定されたファイルを含むフォルダーがあります。これらのフォルダーとファイルは、アセンブリ B の bin フォルダーに正しく出力されます。これらは参照ファイルではなく、デプロイされた場所から実行時に読み込む必要があるファイルにすぎません。

プロジェクト A を実行する場合、アセンブリ B のコードは、記述されているフォルダーとファイルにアクセスする必要があります。 AppDomain.CurrentDomain.BaseDirectoryは、プロジェクト A の実行場所を教えてくれますが、フォルダーとファイルはその場所に存在しません。アセンブリ B の C# コードでこれらのファイルを見つけるにはどうすればよいですか?

アセンブリ B はさまざまなソリューション タイプ (winform、Web サービスなど) にコンパイルされるため、すべてのシナリオで機能する展開が必要です。

それが理にかなっていることを願っています!私は、a)フォルダーとファイルも実行中のディレクトリにあるように展開する方法を変更するか、b)アセンブリBのコードを変更することを探していると思います.

どんな助けにも感謝します!

4

2 に答える 2

2

アセンブリ B を出荷してアプリケーションの外部で使用する場合は、ディスク上の外部フォルダーではなく、フォルダーを埋め込みリソースにすることをお勧めします。もちろん、これらのファイルがアプリケーションで使用されている場合は、ディスク上のファイルではなく ResourceStreams から取得するようにコードを変更する必要があります。

フォルダが、実行時にアプリケーションからアクセスする必要がある単なるデータである場合、最も簡単な解決策は、両方のプロジェクトを共通の出力ディレクトリにビルドすることです。たとえば、出力ディレクトリを設定します

   bin\Debug

   ..\bin\Debug

このようにして、フォルダーを含む A と B の両方の出力が同じディレクトリに配置されます (プロジェクトが通常どおりソリューション ディレクトリの下のフォルダーにある場合)。これは、ビルドの高速化にも役立ちます。

于 2013-04-24T11:36:38.690 に答える