2

こんにちは私はちょうど.Net3.5/ MVC1/VS2008から.Net4.5/ MVC4/VS2012に移行したソリューションを持っています

ほとんどのものはうまく機能しますが、文字列リソースファイルの問題があります

私のソリューションには3つのプロジェクトがあり、そのうちの1つはコアであり、他のプロジェクトはコアに依存しています。

各プロジェクトには、次のパターンで名前が付けられた文字列ファイルがあります。

コアプロジェクト-ファイル名は Strings.resxです

Dependency1プロジェクト-ファイル名は Dependency1Strings.resxです

Dependency2プロジェクト-ファイル名は Dependency2Strings.resxです

これらの各ファイルには、特定のプロジェクトに関連する文字列があります。

ソリューションが読み込まれると、次のコードを使用してプロジェクトごとに1つのResourceManagerを作成します(例ではDependency2を使用します)。

ResourceManager manager = new ResourceManager("Dependency2.Dependency2Strings", typeof(Dependency2Strings).Assembly);

後で電話をかけようとするとmanager.GetString(messageName,ClientCulture)

Dependency2.resources.dllファイルが見つからないことを示すFileNotFoundExceptionが発生します。

奇妙なことに、 Dependency2.resources.dllにリストされているPublicTokenは、Dependency2.dllのPublicKeyと同じです。

私の質問は、Dependency2.resources.dllを生成する理由と場所を誰かが知っているかどうかです(おそらくそれは新しい設定です)。以前のバージョンの.Netでは、このコードは問題なく機能していました。

これは、依存関係プロジェクトでのみ発生し、コアプロジェクトでは発生しません。.Netがこのプロジェクト構造をSateliteAssembly構造と混同しているように見えます。

4

1 に答える 1

0

それで、多くの試行錯誤の後で、私は妥協の解決策を思いついた。

すべてのリソース文字列を同じresxファイルに配置し、3つのリソースマネージャーすべてに同じファイルを参照させました。

これはうまくいきました!

于 2012-12-03T20:44:41.957 に答える