14

我想将App_GlobalResources/Strings.resx编译到我的程序集中(并最终将附属程序集用于Strings.es.resx、Strings.fr.resx等),但是一旦发布应用程序就会出现以下错误:

“无法加载文件或程序集‘App_GlobalResources’或其依赖项之一。系统找不到指定的文件。”

重现步骤:

  1. 创建一个新的 ASP.NET MVC 项目。
  2. 添加 App_GlobalResources 文件夹和Strings.resx文件。
  3. 将文件的构建操作设置为“嵌入式资源”
  4. 将字符串添加到Strings.resx并在 中使用它HomeController.Index(),例如ViewData["Message"] = Strings.MyTest
  5. F5调试,工作正常。
  6. 发布到 IIS 并且(因为Strings.resx被排除在发布之外)您将在发布的站点中收到上述错误。

ASP.NET MVC 项目可以使用编译到 dll 中的字符串资源吗?如果可以,我做错了什么?


更新:这是我在反射器中看到的: 字符串资源

那么为什么ResourceManager没有找到它们呢?默认情况下不应该回退到主程序集吗?

4

2 回答 2

24

这是一个很好的起点http://odetocode.com/Blogs/scott/archive/2009/07/16/resource-files-and-asp-net-mvc-projects.aspx

我像您提到的那样设置了一个项目,并且在部署到 IIS6 时遇到了完全相同的错误。根据 Scott 的建议进行更改和更改Custom Tool即可解决问题。PublicResXFileCodeGeneratorCustom Tool NamespaceResources

在消除 App_GlobalResources 方面,我也会跟随 Scott 的领导,但我让它工作得很好。这可能是个人喜好问题。

于 2009-12-07T22:48:00.783 回答
0

关于 PublicResXFileCodeGenerator 可能还有一件事应该知道 - 它不适用于文件名中包含多个点的文件(请参阅http://social.msdn.microsoft.com/Forums/ru-RU/9412f049 -acd8-4a77-b73a-f3810df18376/naming-resources-files-issue-aspnet-mvc-3?forum=dlr)。因此,Strings.es.resx、Strings.fr.resx 等的代码隐藏保持为空。简单的解决方案是重命名文件。

于 2014-02-04T21:39:39.487 回答