我有个问题已经花了几个晚上的时间来解决。我将一个Web项目迁移到了一个ASP.NET应用程序。
我的主要问题是.resx文件在App_GlobalResources下面。假设我有MyStrings.resx (=默认的区域性)和MyStrings.en.resx (是的,英语不是我的默认语言)。
如果我用“Add.”在解决方案资源管理器中创建解决方案中的文件,我将获得以下设置:* Build : Content * Custom : GlobalResourceProxyGenerator
我猜想默认设置在大多数情况下都是可以的,但我已经有两个问题: a)如果我将Build作为"Content",那么在代码中使用MissingManifestResourceException时,我将得到一个ResourceManager.GetString。解决方案:将其改为"EmbeddedResource“。GlobalResourceProxyGenerator似乎在我的电脑上不见了。如果我在.resx上选择“运行自定义工具”,我会得到错误消息“无法找到这个系统上的自定义工具‘.’。很好。解决方案:将它更改为"PublicResXFileCodeGenerator”。这是有效的。
现在,如果我把设置放在PublicResXFileCodeGenerator上,一切都会编译,但是当我运行解决方案(IIS和VS 2013 for Web)时,我得到了友好的消息,即我在MyWebSite.dll和App_GlobalResources.dll中都得到了"Resources.MyStrings“。
好的,我将自定义工具更改为"ResXFileCodeGenerator“。现在一切都很好。我现在正在将解决方案部署到the服务器上。在这里我得到了CS0122:由于Resources.MyStrings的保护级别,它是不可访问的。这可能是因为它是“内部”声明。
现在我完全迷路了。有什么能帮上忙的吗?
环境: IIS本地和在线VS Express,2013年,用于Web两种语言。对于这两个设置都是: Build::不要复制自定义工具: ResXfileCodeGenerator自定义工具名称空间:资源
对于生成的设计器文件(仅默认语言),设置如下:生成操作:将复制编译到输出目录:不复制
任何帮助都是非常感谢的。
发布于 2015-01-24 21:52:51
我没有真正找到我的麻烦的根源,但我找到了一个很好的解决办法。核心问题可能是Resources.MyStrings类既存在于MyWebsite.dll中,也存在于App_GlobalResoures.dll中。我没有找出设置的目的是什么,以确保您只得到它一次。
我的解决方案是:创建一个“参考资料”文件夹,将所有.resx文件复制到上面并删除App_GlobalResources。在不同的语言中工作也很棒。
为什么有一个"App_Globalresources“文件夹呢?
https://stackoverflow.com/questions/28033589
复制相似问题