C#でASP.NET MVC 4 Webサイトを構築しています。すべての静的文字列をリソースファイル(.resx
)。リソースファイルの作成と入力には、Visual Studioインターフェイスを使用します。私のindex.cshtml
ビュー、リソースファイルの文字列の1つを次のように使用しようとします。
@using Namespace.To.RESX.File
...
<h1>@EN_US.GLOBAL_NAME</h1>
<h2>“@EN_US.GLOBAL_SLOGAN”</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はこれを行うのですか?これらのアクセス制御修飾子を変更する(簡単な)方法はありますか、またはリソースファイルの要点を完全に逃していますか?
うん...これを見なかった。リソースファイルをデザインモードで開き、アクセス修飾子を変更します(少なくともVS 2013では)。
Mac/Visual Studio 2017の人は、.Designerファイルを開いてクラスを公開してください。
フォルダ:
内部をパブリックに変更して保存します。
更新:デフォルトで内部に戻る場合があります。リストされた変更を行いたい変更を行うたび ここ
Resource fileを右クリック(resource.resx
)=>プロパティ。
カスタムツール=> PublicResXFileCodeGenerator
に変更