我有一个在 VS 2008 中运行的 Web 项目。我们在 App_GlobalResources 文件夹中有一些用于国际化的全局资源文件 (*.resx)。所有这一切对我在 VS 中安装的本地 IIS 来说就像一个魅力。

但是当我将我的网络项目发布到本地文件系统和/或另一台服务器时,所有资源都无法再找到。所以我猜预编译在某种程度上破坏了东西。当我调用预编译的web时,我得到一个错误,找不到带有键xyz的资源对象,尽管之前可以找到它。

我使用 .NET Reflector 检查了资源内容是否已进入 *.dll。所有这些标识符都在那里(bin/Web.dll、bin/<culture>/Web.resources.dll)。标识符的加载方式如下:

<asp:MenuItem NavigateUrl="~/OrderNew.aspx" Text="<%$ Resources:MyProject, MenuNewOrder %>" Value="NewOrder">

资源文件名为 MyProject.resx 和 MyProject.<culture>.resx,其中 <culture> 对应于特定区域性(即MyProject.de-DE.resx)。

有什么想法如何解决这个问题吗?

我真的很感谢任何帮助。

谢谢

编辑:

如果我手动将 App_GlobalResources 文件夹复制到输出中,资源可能会正常加载。所以我真的很想知道这个预编译是关于什么的。

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

有帮助吗?

解决方案

我遇到了同样的问题,必须对 resx 文件属性进行两项更改。

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

其他提示

(我不能在以前的答案尚未置评...没有信誉......?)

这并没有解决我的问题,我很害怕。

当试图“内容/复制始终”解决方案,我得到一个异常说,在编译时链接没有工作。

为什么asp.net需要的RESX文件时,资源被编译!?

从另一个项目复制资源文件时,我有这个错误。

我删除了全局资源,增加新的资源,并复制从旧到新的XML元素data解决了这个。

这导致用于该资源的以下设置:

  <ItemGroup>
    <Content Include="App_GlobalResources\Global.resx">
      <Generator>GlobalResourceProxyGenerator</Generator>
      <LastGenOutput>Global.Designer.cs</LastGenOutput>
    </Content>
  </ItemGroup>

我有同样的问题。每当我发表我的应用程序在Small Business Server(SBS2008)它停留在控制名称线,但实际上在元:它获取ResourceKey一部分。上述方案中的非helpd我

我花6小时搞清楚了这一点,最后我意识到这happend当我没有在服务器上的文件夹的一些cleenup。在begning我所有的应用程序是位于E:在他们的文件夹,但那时我已经创建的文件夹与指示应用ApplicationPools名字和我谨coresponding应用有

我不知道IIS7在我的SBS如何寻找资源文件,但肯定这是问题。当我回到我的应用程序到E:再次一切都开始像一个魅力的工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top