【问题标题】:ASP.NET Core 2 - Do not compile resx filesASP.NET Core 2 - 不要编译 resx 文件
【发布时间】:2018-07-14 17:22:54
【问题描述】:

使用以前的 MVC/ASP.NET 部署代码时,resx 文件部署为未编译,并且能够修改键、值和更改。使用 ASP.NET Core 2+,我注意到 resx 被编译成 dll。

我用

编辑了 .csproj
<PropertyGroup>
  <TargetFramework>netcoreapp2.1</TargetFramework>
  <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
</PropertyGroup>

<ItemGroup>
  <Content Include="Resources\*" CopyToPublishDirectory="Always" />
</ItemGroup>

编辑 .csproj 并重新部署后,资源文件夹和 resx 文件都在那里,但是当我在记事本中的服务器上编辑时,编辑没有反映。似乎仍然需要编译。

有什么方法可以在不编译的情况下更新 resx 文件?还是在 asp.net core 2 中有不同的方法?

【问题讨论】:

    标签: asp.net-core asp.net-core-2.0 resx


    【解决方案1】:

    在解决方案资源管理器中选择您要发布的项目。

    查看解决方案资源管理器底部的“属性”部分

    • 将构建操作更改为内容
    • 将复制到输出目录更改为始终复制

    您也可以查看https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization?view=aspnetcore-2.1

    【讨论】:

    • 在我进行了上述两项更改后,从 layout.cshtml 文件中的资源文件读取密钥时出现异常 MissingManifestResourceException:找不到任何适合指定文化或中性文化的资源。确保“ProjectA.Resources.layoutskin.resources”在编译时正确嵌入或链接到程序集“ProjectA”中,或者所有所需的附属程序集都是可加载的并且完全签名。在 layout.cshml 中:包括:@using ProjectA.Resources 并调用:@layoutskin.WelcomeText。它在进行两项更改之前有效。有什么想法吗?
    【解决方案2】:

    我个人只为资源创建一个新的类库项目,然后将其添加为对主项目的引用。

    这样我就可以编辑、编译和上传资源库项目,而无需构建和上传整个项目。

    顺便说一句,资源 .resx 文件类型未在类库项目新文件对话框中列出,但您可以创建一个文本文件并将其扩展名手动更改为 .resx ,它会正常工作。

    【讨论】:

    • 抱歉没有机会早点回复。我将 resx 文件移至库项目。如果 ASP.NET Core2 引用了库 dll 并且它可以工作。但回到这个问题,当在 Visual Studio 之外更新 resx 文件并保存以及运行代码(引用 resx 库)时,新的更改不会显示。只有当我重建它时才会显示。你有机会看看代码吗?以某种方式向您展示我创建的示例代码/结构。谢谢
    【解决方案3】:

    它可能对某人有用:通过安装 orchard.core 包使用 .po 文件而不是 .resx 文件

    Configure portable object localization in ASP.NET Core

    【讨论】:

      猜你喜欢
      • 2014-01-19
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      • 1970-01-01
      • 2023-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多