【发布时间】: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