【问题标题】:Move Razor library resources to MVC published folder将 Razor 库资源移动到 MVC 发布文件夹
【发布时间】:2020-11-05 21:08:22
【问题描述】:

我在 Resources 文件夹中有一个带有 Razor 组件和(荷兰语/nl)本地化资源 (.resx) 的 Razor 类库。我使用 <component> 标记在单独项目中的 MVC 应用程序中的视图上使用该组件。

当我在 Visual Studio 中运行我的 MVC 应用程序时,组件的本地化字符串得到正确检索。 但是,当我将 MVC 应用程序发布到 {publishfolder} 时,组件的 RazorComponentLibrary.resources.dll 文件最终位于 {publishfolder}\wwwroot\_framework\_bin\nl\ 文件夹中,并且无法检索本地化字符串。如果我手动将RazorComponentLibrary.resources.dll 复制/移动到{publishfolder}\nl\ 文件夹,一切都会再次正常运行。

是否可以指定,例如在MVC应用的csproj中,resource.dll不需要放在wwwroot文件夹中,而是放在nl文件夹中?

我已经尝试添加

<EmbeddedResource Include="full-path-to-resx-file" Link="Resources\RazorComponentLibrary.ComponentName.nl.resx" />

到 MVC 应用程序的 csproj,但这没有帮助。

【问题讨论】:

    标签: c# asp.net-core razor localization blazor


    【解决方案1】:

    好的,我找到了解决方案。我在 MVC 应用的 csproj 文件中添加了以下任务:

    <Target Name="CopyRazorResourceFilesNl" AfterTargets="Publish">
        <Copy SourceFiles="$(PublishDir)\wwwroot\_framework\_bin\nl\RazorComponentLibrary.resources.dll" DestinationFolder="$(PublishDir)\nl" />
    </Target>
    <Target Name="CopyRazorResourceFilesEn" AfterTargets="Publish">
        <Copy SourceFiles="$(PublishDir)\wwwroot\_framework\_bin\en\RazorComponentLibrary.resources.dll" DestinationFolder="$(PublishDir)\en" />
    </Target>
    

    这会将 wwwroot 中的 dll 复制到 MVC 应用程序用于本地化的 nl(和 en)文件夹。我在两个位置都需要 dll,所以这是完美的。

    您可以在此处找到复制任务的参考:https://docs.microsoft.com/en-us/visualstudio/msbuild/copy-task?view=vs-2019

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      相关资源
      最近更新 更多