在VS2008中发布网站后无法解析全局资源

时间:2009-05-12 07:10:26

标签: asp.net visual-studio-2008 resources publishing pre-compilation

我在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文件夹复制到输出,则可以正常加载资源。所以我真的很想知道这个预编译是什么。

我仍然有兴趣以“正确的方式”解决问题。

4 个答案:

答案 0 :(得分:12)

我遇到了同样的问题,不得不对resx文件属性进行两次更改。

  1. 将“构建操作”设置为“内容”
  2. 将“复制到输出目录”设置为“始终复制”

答案 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时:所有人都开始像魅力一样工作。