0

.resx の文字列に直接アクセスする方法はありますか?

いくつかの異なるプロジェクトがあり、.resx は SharpDevelop テンプレート「Misc>>Empty resource file」を使用して作成されました。

次のようなほとんどの方法をオンラインで試しました。

... = new ResourceManager ("ProjectEtc.resxFileName", 
           Assembly.GetExecutingAssembly)

しかし、私は同じエラーを受け取ります:

Could not find any resources appropriate for the specified culture or 
neutral culture. Make sure "ProjectEtc.resxFileName.resources" was 
correctly embedded or linked into assembly "Project calling" at compile time...

私が何をしているように見えても。

.resx も .resource ファイルに変換する必要があるように見えますが、これはしたくありません。

#develop テンプレートを使用すると、一部の手順を省略できませんか?

ちょっと待ってください...これは定数文字列を.NETに格納するための最良の方法ですか?

ありがとう、デーン

4

1 に答える 1

0

.resx ファイルのBuild アクションがEmbeddedResourceに設定されていることを確認します。空のリソース ファイル テンプレートを使用して新しいファイルを作成すると、SharpDevelop はデフォルトでこれを行う必要がありますが、確認する価値があります。

ここで、プロジェクトのルート名前空間とファイル拡張子のない resx ファイル名を ResourceManager コンストラクターに渡す必要があります。

したがって、SharpDevelop で TestResource という名前の新しいプロジェクトを作成すると、ルート名前空間は TestResource になります。次に、プロジェクトに Foo.resx というリソース ファイルを追加するとします。次に、「MyString」という名前の文字列を追加すると、次のコードで対応する文字列値にアクセスできます。

Dim resourceManager As New ResourceManager("TestResource.Foo", Assembly.GetExecutingAssembly)
Dim result = resourceManager.GetString("MyString")

アプリケーションをコンパイルすると、.resx ファイルが .resources ファイルにコンパイルされ、プロジェクトに埋め込まれます。ILSpyなどのツールを使用すると、この埋め込みリソースとその名前を確認できます。

.resx ファイルの使用は、通常、.NET で多言語アプリケーションを実行する方法であるため、それらを使用して文字列を保存しても問題ありません。

于 2012-02-07T19:43:07.717 に答える