13

VS 2008 で Web プロジェクトを実行しています。国際化のために App_GlobalResources フォルダーにいくつかのグローバル リソース ファイル (*.resx) があります。これはすべて、VS からのローカル IIS インストールで魅力的に機能します。

しかし、Web プロジェクトをローカル ファイルシステムや別のサーバーに公開すると、すべてのリソースが見つからなくなります。したがって、プリコンパイルが何らかの形で破損していると思います。コンパイル済みの Web を呼び出すと、キー xyz を持つリソース オブジェクトが見つからないというエラーが表示されますが、以前は見つかっていました。

リソースが* .dllに含まれているかどうかを.NETリフレクターで確認しました。これらの識別子はすべてそこにあります (bin/Web.dll、bin/<culture>/Web.resources.dll)。識別子は次のようにロードされます。

<asp:MenuItem NavigateUrl="~/OrderNew.aspx" Text="<%$ Resources:MyProject, MenuNewOrder %>" Value="NewOrder">

リソース ファイルは MyProject.resx および MyProject.<culture>.resx と呼ばれ、<culture> は特定のカルチャ (つまり、MyProject.de-DE.resx) に対応します。

これを解決する方法はありますか?

どんな助けでも本当に感謝しています。

ありがとう

編集:

App_GlobalResources フォルダーを手動で出力にコピーすると、リソースが正常に読み込まれる場合があります。ですから、このプリコンパイルは一体何なのか、本当に気になります。

私はまだ問題を「正しい方法」で解決することに興味があります。

4

4 に答える 4

13

同じ問題があり、resx ファイルのプロパティに 2 つの変更を加える必要がありました。

  1. 「ビルドアクション」をコンテンツに設定します
  2. 「出力ディレクトリにコピー」を常にコピーするように設定します
于 2009-06-02T02:23:54.893 に答える
2

(以前の回答にはコメントできません...評判はまだありません...?)

これで問題は解決しませんでした。

「Content/Copy Always」ソリューションを試すと、コンパイル時のリンクが機能しなかったという例外が発生します。

リソースをコンパイルするときに asp.net に resx ファイルが必要なのはなぜですか!?

于 2010-05-27T09:07:35.837 に答える
1

別のプロジェクトからリソースファイルをコピーするときにこのエラーが発生しました。

これを解決するには、グローバルリソースを削除し、新しいリソースを追加して、data要素を古いXMLから新しいXMLにコピーします。

これにより、リソースの設定は次のようになります。

  <ItemGroup>
    <Content Include="App_GlobalResources\Global.resx">
      <Generator>GlobalResourceProxyGenerator</Generator>
      <LastGenOutput>Global.Designer.cs</LastGenOutput>
    </Content>
  </ItemGroup>
于 2012-01-12T08:57:39.693 に答える
0

同じ問題がありました。アプリを Small Business Server (SBS2008) に公開するたびに、コントロール名の行で停止しましたが、実際にはその meta:resourcekey 部分で停止しました。上記の解決策のどれも私を助けませんでした。

私はこれを理解するのに 6 時間を費やしましたが、最終的に、サーバーでフォルダーのクリーンアップを行ったときにこれが発生したことに気付きました。当初、すべてのアプリはフォルダー内の E: にありましたが、アプリ ApplicationPools を示す名前のフォルダーを作成し、対応するアプリをそこに移動しました。

SBS の IIS7 がリソース ファイルを探す方法はわかりませんが、間違いなくこれが問題でした。アプリを E: に戻すと、すべてが魅力的に機能し始めました。

于 2013-02-06T15:09:13.970 に答える