2010-03-12 24 views
1

我在App_GlobalResources文件,其资源通常是这样的访问带有.resx文件的ASP.NET Web应用程序:部署没有.resx文件的ASP.NET应用程序?

ASPX:<asp:Literal ID="l1" runat="server" Text="<%$ Resources:GalleryServerPro, Admin_Tab_Hdr %>" />

代码隐藏:string msg = Resources.GalleryServerPro.Successfully_Restored_Msg;

有什么办法将.resx值直接编译到DLL中,以便我可以部署该应用程序,而不需要.resx文件不必编辑任何现有代码?

我问这是因为我将现有的应用程序移植到DotNetNuke模块,而DotNetNuke不允许.resx文件,所以我正在寻找解决方法。

感谢, 罗杰·马丁 Gallery Server Pro

回答

0

你不需要改变你的代码。您需要查看创建satellite assemblies

这是覆盖在博客文章,如更好的细节:http://blogs.msdn.com/pedram/archive/2007/08/04/automated-build-of-satellite-assemblies-in-visual-studio-with-msbuild.aspx

+0

我对这个花了几个小时都没有成功。看起来,我在ASPX页面中使用声明性语法会导致应用程序依赖于App_GlobalResources中的.resx文件,并且不可能将其重构为卫星程序集。当我尝试时,我的应用忽略它(从.resx继续显示)。如果我删除.resx文件以试图强制它使用它,ASP.NET会默默创建一个新的空白.resx文件,然后抛出一个错误,因为它是空的。如果我然后删除App_GlobalResources目录,w3wp.exe进程崩溃。 – user98773

+0

您是否看过将完整编译的应用程序部署到Web服务器?您可以预编译该网站。请参阅http://msdn.microsoft.com/en-us/library/ms229863(VS.80).aspx。 完成此操作后,Web目录中应该没有resx文件。 引用“这些文件被编译成程序集并放入Bin目录中,没有在主输出目录下创建App_GlobalResources子目录,并且位于源目录中的.resx或.resources文件都不会复制到输出目录。 也许这个工具实际上比卫星组装程序更需要什么? –

+0

预编译网站只适用于网站,而不是网络应用程序,所以这对我无效。 – user98773