将Razor库资源移动到MVC发布文件夹



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

当我在VisualStudio中运行MVC应用程序时,可以正确检索组件的本地化字符串。但是,当我将MVC应用程序发布到{publishfolder}时,组件的RazorComponentLibrary.resources.dll文件最终会在{publishfolder}wwwroot_framework_binnl文件夹中,并且无法检索本地化字符串。如果我手动将RazorComponentLibrary.resources.dll复制/移动到{publishfolder}nl文件夹,一切都会正常工作。

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

我已经尝试添加

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

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

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

<Target Name="CopyRazorResourceFilesNl" AfterTargets="Publish">
<Copy SourceFiles="$(PublishDir)wwwroot_framework_binnlRazorComponentLibrary.resources.dll" DestinationFolder="$(PublishDir)nl" />
</Target>
<Target Name="CopyRazorResourceFilesEn" AfterTargets="Publish">
<Copy SourceFiles="$(PublishDir)wwwroot_framework_binenRazorComponentLibrary.resources.dll" DestinationFolder="$(PublishDir)en" />
</Target>

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

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

相关内容

  • 没有找到相关文章

最新更新