1

複数のプロジェクトで構成される .Net ソリューションがあります。これらのプロジェクトの 1 つは、WPF プロジェクトが依存するすべてのビジネス ロジックを保持します。

ビジネス ロジック プロジェクトは、さまざまな機能のために一連のリソース ファイルを使用します。

以前は 2 つのプロジェクトは 1 つだけだったので、これらのリソース ファイルをすべて [出力ディレクトリにコピー] を true に設定しました。実行中のアプリケーションは、ファイル パスを次のように構成しました。

static readonly string ResourceFilePath = 
    Path.Combine(
        Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
        "resources\\thefile.ext");

.私はリソースを使用できることを知っており、それは正常に機能します (拡張子が消え、文字がに置き換えられることを除いて_)。

ただし、多数のファイルを保持するディレクトリ ツリーがある場合もあります。実行中のアプリケーションは、全体を一時的な場所にコピーします。

個々のリソース ファイルと同様に、すべてのファイルを Visual Studio の出力ディレクトリにコピーするように設定しました。実行中のアプリケーションはディレクトリのパスを構成し、そのパスを使用してすべてを一時的な場所に再帰的にコピーします。

static readonly string ResourceFilesPath = 
    Path.Combine(
        Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
        "resources\\somedirectory\\");

public void CopyAll(DirectoryInfo source, DirectoryInfo target)
{
...

これはすべて、Visual Studio でのデバッグ中、およびアプリケーションがインストールされている場合でもうまく機能しました。また、ファイルはディスク上にあるため、個別にバージョン管理されていました。

私の問題は、ディレクトリとファイル構造をコピーする 2 番目のシナリオにあります。ビジネス ロジックが別のプロジェクトにあるため、リソース ファイルはフロントエンド プロジェクトの出力ディレクトリにコピーされません。

私の質問は: ディレクトリ ツリー内の多くのリソースを処理するためのより良い方法はありますか?

4

1 に答える 1

0

Maybe you can use GetAssembly or GetEntryAssembly to get a reference to the WPF assembly so the Location properly returns the desired output path?

Or you can set up build events for the business logic project to copy the resources to WPF project's output path.

于 2012-09-02T16:09:17.133 に答える