【问题标题】:Deploy ASP.NET app without .resx file?部署没有 .resx 文件的 ASP.NET 应用程序?
【发布时间】:2011-01-26 22:44:38
【问题描述】:

我有一个 ASP.NET Web 应用程序,在 App_GlobalResources 中有一个 .resx 文件,其资源通常按如下方式访问:

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

【问题讨论】:

    标签: asp.net resx


    【解决方案1】:

    您无需更改代码。您需要查看创建satellite assemblies

    这在博客帖子中有更详细的介绍,例如:http://blogs.msdn.com/pedram/archive/2007/08/04/automated-build-of-satellite-assemblies-in-visual-studio-with-msbuild.aspx

    【讨论】:

    • 我在这上面花了几个小时都没有成功。看来我在 ASPX 页面中使用声明性语法会导致应用程序依赖于 App_GlobalResources 中的 .resx 文件,并且无法将其重构为附属程序集。当我尝试时,我的应用程序会忽略它(继续从 .resx 显示)。如果我删除 .resx 文件以尝试强制它使用它,ASP.NET 会默默地创建一个新的空 .resx 文件,然后因为它是空的而引发错误。如果我随后删除 App_GlobalResources 目录,w3wp.exe 进程将崩溃。
    • 您是否考虑过将完整编译的应用程序部署到 Web 服务器?您可以预编译该站点。见msdn.microsoft.com/en-us/library/ms229863(VS.80).aspx。完成后,web 目录中应该没有 resx 文件。引用“这些文件被编译成程序集并放置在 Bin 目录中。在主输出目录下没有创建 App_GlobalResources 子目录,并且没有将位于源目录中的 .resx 或 .resources 文件复制到输出目录中。”也许这个工具实际上比附属程序集更需要?
    • 预编译站点仅适用于网站,不适用于 Web 应用程序,因此对我不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多