2012-03-05 98 views
2

我在全球化方面遇到了一些问题。我在ASP.NET 2.0中继承了一个非常古老的项目。它有多种语言的全球化文件。App_GlobalResources全球化

但是,当我构建用于部署的应用程序时,它在我们的测试环境中运行良好。但是,当我们将应用程序复制到生产环境时,它在出错时出错了:Global,MyStringHere%>。

声明在资源文件中找不到MyStringHere。

为什么在开发和测试环境中运行良好,但在生产环境中运行得不好?从一个环境到下一个环境文件是完全一样的(尽管inetpub文件位于每台机器的不同目录中)。

任何人有任何想法?

编辑:

很奇怪。如果我从后面的代码调用资源。

public string _MyStringName = Resources.Global.MyStringHere; 

这适用于所有环境。

但是,使用旧:

<%$Resources: Global, MyStringHere %> 

在生产中仅示数出来。

回答

0

只是在黑暗中拍摄这里,但你有钥匙是基于环境或机器名配置?我们在许多项目中都这样做。我们的一些项目只会出于特定原因在特定环境中运行。另一个猜测是检查你是否有#if(DEBUG)某处可能跳过代码。

+0

否#DEBUG。这很奇怪为什么它这样做。资源文件多年来一直没有改变,唯一改变的就是App_GlobalResources.compiled文件。散列/ filehash/resHash文件已更改。 – Sean 2012-03-05 23:37:16

+0

当您对“MyStringHere”进行解决方案搜索时,会发生什么......您是否看到它在资源文件中定义? – Zeus 2012-03-06 00:00:20

+0

是的。它被定义 - 它在开发时甚至在开发机器上的释放模式下运行得非常好。 – Sean 2012-03-06 00:20:18

0

是否确定将来自App_GlobalResources的.resx文件复制到部署站点? App_GlobalResources文件通常应该与Build Action = Content一起使用,而不是Build Action = Embedded Resources。

在您的开发计算机上,嵌入式资源的设置有效,因为这些文件仍然物理位于App_GlobalResources,嵌入式中。嵌入式资源被忽略。这可能会给您错误的印象,认为您的构建操作已正确配置。

+0

是的资源文件在生产机器上。但是,选择一个资源文件不会给我在属性中的“生成操作”选项。 – Sean 2012-03-06 00:21:26