MSBuild 嵌入程序集资源

嵌入资源程序集

如何在程序集中嵌入资源呢?以及要如何使用呢?

项目文件配置

使用 MSBuild 的 EmbeddedResource 元素将文件嵌入到程序集中。

 <ItemGroup>
  <EmbeddedResource Include="Files\*.txt"></EmbeddedResource>
  <EmbeddedResource Include="X.resx" LogicalName="SomeName.resources" />
  <EmbeddedResource Include="X.fr-FR.resx" LogicalName="SomeName.resources" />
 </ItemGroup>

从程序集中读取资源

在 .net 中,使用 System.Resources.ResourceManager 读取程序集中嵌入的文件。

        private static void Main()
        {
            var helloStream = typeof(Program).Assembly.GetManifestResourceStream("demo.Files.Message.txt");
            StreamReader reader = new StreamReader(helloStream);
            var str = reader.ReadToEnd();
            Console.WriteLine(str);
        }

读取的资源名的名称命名规则:

  • 如果未指定LogicalName,那么资源名为 {AssemblyFullName}.{DirectoryName}.{DirectoryName}
  • 如果指定了LogicalName,使用逻辑名称读取即可。

参考文档:https://learn.microsoft.com/zh-cn/dotnet/core/resources/manifest-file-names

posted @ 2024-06-24 23:48  RafaelLxf  阅读(87)  评论(0)    收藏  举报