NuGet包中的嵌入式资源

5
我正在构建一个C#库,将其打包为NuGet。它在Resources目录下包含一个名为Errors.en.resx的文件,其中包含一些错误代码的翻译。该文件的“Build Action”设置为“嵌入式资源”(我已在.csproj文件中确认),但是当项目构建时,该资源最终会出现在一个名为“en”的文件夹中的单独dll中。
这样做是可以的,但是在使用NuGet打包时,“en”文件夹会被忽略,这意味着尝试使用ResourceManager获取消息将失败。
理想情况下,我希望将资源嵌入到主dll中,但如果无法实现,我将添加资源dll到NuGet包中。迄今为止,各种设置和NuGet规范更改都没有成功。
1个回答

6
最简单的解决方案是在NuGet规范中明确添加资源文件:
  <files>
    <file src="bin\$configuration$\en\*.dll" target="lib\net45\en" />
  </files>

参考文献:在包中指定要包含的文件


如果有许多语言资源dll文件,您可以将它们移动到一个文件夹下,然后使用一行代码复制所有文件,像这样:<file src="lib\**" target="lib" />,参考链接:https://learn.microsoft.com/en-us/nuget/create-packages/creating-localized-packages - Peter-Yu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接