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

C# 将Razor库资源移动到MVC发布文件夹,c#,asp.net-core,razor,localization,blazor,C#,Asp.net Core,Razor,Localization,Blazor,我有一个Razor类库,其中包含一个Razor组件和一个资源文件夹中的(Dutch/nl)本地化资源(.resx)。我在一个单独的项目中使用MVC应用程序视图上的组件,使用标记 当我在VisualStudio中运行我的MVC应用程序时,组件的本地化字符串被正确检索。 但是,当我将MVC应用程序发布到{publishfolder}时,该组件的RazorComponentLibrary.resources.dll文件最终位于{publishfolder}\wwwroot\\u framework\\

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

当我在VisualStudio中运行我的MVC应用程序时,组件的本地化字符串被正确检索。 但是,当我将MVC应用程序发布到
{publishfolder}
时,该组件的
RazorComponentLibrary.resources.dll
文件最终位于
{publishfolder}\wwwroot\\u framework\\u 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,但这没有帮助。

好的,我找到了解决方案。我在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,所以这是完美的

您可以在此处找到复制任务的参考: