我在VS 2008中运行了一个Web项目。我们在App_GlobalResources文件夹中有一些全局资源文件(* .resx)用于国际化。所有这些就像我在VS上安装本地IIS时的魅力一样。
但是当我将我的web项目发布到本地文件系统和/或其他服务器时,无法再找到所有资源。所以我想预编译会以某种方式腐蚀东西。当我调用预编译的Web时,我收到一个错误,即无法找到具有密钥xyz的资源对象,尽管之前可以找到它。
我使用.NET反射器检查了资源是否为* .dll。所有这些标识符都在那里(bin / Web.dll,bin /< culture> /Web.resources.dll)。标识符的加载方式如下:
<asp:MenuItem NavigateUrl="~/OrderNew.aspx" Text="<%$ Resources:MyProject, MenuNewOrder %>" Value="NewOrder">
资源文件名为MyProject.resx和MyProject。&lt; culture&gt; .resx其中&lt; culture&gt;对应特定的文化(即MyProject.de-DE.resx)。
任何想法如何解决这个问题?
我真的很感激任何帮助。
由于
修改
如果我手动将App_GlobalResources文件夹复制到输出,则可以正常加载资源。所以我真的很想知道这个预编译是什么。
我仍然有兴趣以“正确的方式”解决问题。
答案 0 :(得分:12)
我遇到了同样的问题,不得不对resx文件属性进行两次更改。
答案 1 :(得分:2)
(我不能评论以前的答案......还没有声誉......?)
这不能解决我的问题,我很害怕。
在尝试“内容/复制始终”解决方案时,我得到一个例外,说编译时的链接不起作用。
为什么asp.net在编译资源时需要resx文件!?
答案 2 :(得分:1)
从其他项目复制资源文件时出现此错误。
我通过删除全局资源,添加新资源并将data
元素从旧XML复制到新XML来解决了这个问题。
这会导致资源的以下设置:
<ItemGroup>
<Content Include="App_GlobalResources\Global.resx">
<Generator>GlobalResourceProxyGenerator</Generator>
<LastGenOutput>Global.Designer.cs</LastGenOutput>
</Content>
</ItemGroup>
答案 3 :(得分:0)
我有同样的问题。每当我将我的应用程序发布到Small Business Server(SBS2008)时,它都会停留在控件名称行上,但实际上是在meta:resourcekey部分。没有上述解决方案帮助了我。
我花了6个小时搞清楚这一点,最后我意识到当我在服务器上做一些文件夹清理时会发生这种情况。在开始时我的所有应用程序都位于E:在他们的文件夹中,但后来我创建了文件夹,其中的名称指示应用程序ApplicationPools,我在那里移动相应的应用程序。
我不知道我的SBS上的IIS7如何寻找资源文件,但绝对是这个问题。当我把我的应用程序带回E时:所有人都开始像魅力一样工作。