【问题标题】:ASP.NET global resources issueASP.NET 全局资源问题
【发布时间】:2015-01-19 21:15:28
【问题描述】:

我遇到了一个问题,已经花了我几个晚上的时间来解决。 我将 ASP.NET Web 项目迁移到 Web 应用程序。

我的主要问题是 App_GlobalResources 下面的 .resx 文件。 假设我有 MyStrings.resx (= 默认文化)和 MyStrings.en.resx (是的,英语不是我的默认设置)。

如果我在解决方案资源管理器中使用“添加...”在解决方案中创建文件,我将获得以下设置: * 构建动作:内容 * 自定义工具:GlobalResourceProxyGenerator

我猜默认设置在大多数情况下都很好,但我已经遇到了两个问题: a) 如果我将构建操作保留为“内容”,则在代码中使用 ResourceManager.GetString 时会收到 MissingManifestResourceException。解决方案:将其更改为“EmbeddedResource”。 b)我的计算机上似乎缺少 GlobalResourceProxyGenerator。如果我在 .resx 上选择“运行自定义工具”,我会收到错误消息“在此系统上找不到自定义工具'...'。太好了。解决方案:将其更改为“PublicResXFileCodeGenerator”。这有效。

现在,如果我将设置保留在 PublicResXFileCodeGenerator,一切都会编译,但是当我运行解决方案(IIS 和 VS Express 2013 for Web)时,我会收到一条友好消息,即我在 MyWebSite.dll 和App_GlobalResources.dll。

好的,我将自定义工具更改为“ResXFileCodeGenerator”。现在,一切正常。 我现在正在将解决方案部署到网络服务器。在那里我得到 CS0122: Resources.MyStrings 由于其保护级别而无法访问。 这可能是由于它的“内部”声明。

现在我完全迷路了。有什么帮助可以解决这个问题吗?

环境: IIS 本地和在线 VS Express 2013 网页版 两种语言。 这两种设置都是: 构建操作:嵌入式资源 复制到输出目录:不要复制 自定义工具:ResXfileCodeGenerator 自定义工具命名空间:资源

对于生成的设计器文件(仅默认语言),设置为: 构建动作:编译 复制到输出目录:不要复制

感谢任何帮助

【问题讨论】:

  • 什么;使生成的资源文件公开的问题是什么?打开 .resx。向设计师提交文件并公开。
  • 如果我这样做,“自定义工具”将更改为 PublicResXFileCodeGenerator。如果我这样做,我会遇到代码在两个位置定义的问题。
  • 我很想知道为什么有人将该主题评为-1。不清楚吗?缺少研究?

标签: c# asp.net app-globalresources


【解决方案1】:

我并没有真正找到问题的根源,但我找到了一个很好的解决方法。核心问题可能是在 MyWebsite.dll 和 App_GlobalResoures.dll 中都存在 Resources.MyStrings 类。我没有找到确保您只获得一次的预期设置。

我的解决方案:我创建了一个“资源”文件夹,复制了我所有的 .resx 文件并删除了 App_GlobalResources。 也适用于不同的语言。

为什么会有“App_Globalresources”文件夹?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-16
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    相关资源
    最近更新 更多