我有一个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年