web-dev-qa-db-ja.com

アクセスできない、内部のリソースファイル?

C#でASP.NET MVC 4 Webサイトを構築しています。すべての静的文字列をリソースファイル(.resx)。リソースファイルの作成と入力には、Visual Studioインターフェイスを使用します。私のindex.cshtmlビュー、リソースファイルの文字列の1つを次のように使用しようとします。

@using Namespace.To.RESX.File

...

<h1>@EN_US.GLOBAL_NAME</h1>
<h2>&ldquo;@EN_US.GLOBAL_SLOGAN&rdquo;</h2>

...

アプリケーションをコンパイルすることはできますが、ページをロードすると、次のようなランタイムエラーが発生します。

Compiler Error Message: CS0122: 'Namespace.To.RESX.File.EN_US' is inaccessible due to its protection level

Resxデザイナファイルを見ると、クラスとそのすべてのメンバーがinternalとしてマークされていることがわかります。 C#のアクセス制御修飾子の機能、動作方法などは完全に理解していますが、Visual Studioがこのようにリソースメンバーへのアクセスを制限する理由がわかりません。

なぜVisual Studioはこれを行うのですか?これらのアクセス制御修飾子を変更する(簡単な)方法はありますか、またはリソースファイルの要点を完全に逃していますか?

28
Oliver Spryn

うん...これを見なかった。リソースファイルをデザインモードで開き、アクセス修飾子を変更します(少なくともVS 2013では)。

enter image description here

57
Oliver Spryn

Mac/Visual Studio 2017の人は、.Designerファイルを開いてクラスを公開してください。

フォルダ:

enter image description here

内部をパブリックに変更して保存します。

enter image description here

更新:デフォルトで内部に戻る場合があります。リストされた変更を行いたい変更を行うたび ここ

  1. Resource fileを右クリック(resource.resx)=>プロパティ

  2. カスタムツール=> PublicResXFileCodeGeneratorに変更

3
LeRoy