前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >.NET 项目如何管理资源及配置文件

.NET 项目如何管理资源及配置文件

作者头像
jgrass
发布2025-01-17 15:58:45
发布2025-01-17 15:58:45
13610
代码可运行
举报
文章被收录于专栏:蔻丁杂记
运行总次数:0
代码可运行

.NET项目如何管理资源及配置文件_哔哩哔哩 .NET 项目的资源及配置文件(视频中的思维导图)

本文为以上视频的笔记

🍉 生成操作

Build actions for files - Visual Studio (Windows) | Microsoft Learn

复制到输出目录

这个是跟生成操作独立的一个配置,顾名思义,就是指是否将指定文件复制到输出目录。

生成操作配置

  • 🌳 无
  • 🌳 内容(content)

需要额外设置输出到生成目录

1 可以通过 GetContentStream 获取内容

代码语言:javascript
代码运行次数:0
复制
var stream = Application.GetContentStream(new Uri("readme.txt", UriKind.Relative)).Stream;

2 常用于

readme.txt,C/C++ 类库,ini 文件等

3 注意点

路径中不能有 #

  • 🌳 嵌入的资源(Embedded Resource)

不推荐,有更好的方法,如后面的 Resources.resx

将会被嵌入到程序集文件中,可以通过 GetManifestResourceStream 读取。

代码语言:javascript
代码运行次数:0
复制
System.Reflection.Assembly.GetManifestResourceStream("WpfApp1.readme.txt");// WpfApp1 是程序集的名称

1 常用于

不希望用户看到,且只读的文件

  • 🌳 资源(Resource)

嵌入到输出的程序集文件中

1 可以直接在 xaml 中访问

代码语言:javascript
代码运行次数:0
复制
// 将 pixel.jpg 的生成操作设置成资源<Image Source="../Assets/pixel.jpg"/>
代码语言:javascript
代码运行次数:0
复制
// 这里 MiSans Heavy 是字体名称,不是字体文件名<Window.Resources>  <FontFamiLy x:Key="MiSans">../Assets/Fonts/#MiSans Heavy</FontFamiLy></Window.Resources>
<Grid>  <TextBLock FontSize="32" FontFamily="{StaticResource MiSans}">Hello,worLd!</TextBLock></Grid>

2 可以用 Application.GetResourceStream(Uri) 获取

3 会变成 obj 目录下的 AssemblyName.g.resources

4 常用于

图片、字体文件等会在.xaml中使用的资源

  • 🌳 编译 (Compile)

各种 .cs 文件

  • 🌳 页(Page)

xaml 预编译成 baml

App.xaml 以外的各种 .xaml 文件

  • 🌳 应用程序定义(ApplicationDefinition)

App.xaml 文件

  • 🌳 启动画面(Splash Screen)

将图片设置成这个,启动时会使用。很少使用。

以上就是 生成操作 的一些配置选项,常用的就是 内容资源

🍉 资源词典(ResourceDictionary)

FrameworkElement 的属性 Resources,每个 FrameworkElement 都有,一般在 xaml 中定义,就是常写 Style 的地方。

注意不要和 Properties.Resources 搞混

🍉 常出现在 Properties 文件夹命名中间中

Settings.settings

在 Framework 项目中自带,在 .NET Core 项目中,可以手动新建。或者通过添加新项 - 设置文件(C#项) 的方式添加。

Settings.settings 和 App.config 会自动联动,修改 Settings.settings 中的值,会自动更新 App.config。 反过来,修改 App.config 中的值,会提示是否更新 Settings.settings。 所以,如果需要修改值,一般只需要操作 Settings.settings。

Settings.settings 会自动生成一个 Settings.Designer.cs,里面有一个单例的 Settings 实例,可以快速访问其中的配置。

代码语言:javascript
代码运行次数:0
复制
string value = Properties.Settings.Default.Key1;

在生成之后,会在输出目录生成类似 WpfApp.dll.config 这样的文件,里面就是记录的 Settings.settings 的配置。

对于应用程序类型的配置,配置是只读的,类似全局常量。对于用户类型的配置,可以修改并保存。

代码语言:javascript
代码运行次数:0
复制
// Properties.Settings.Default.KeyApp1 = "new app 1";  // 只读Properties.Settings.Default.KeyUser1 = "new user 1";Properties.Settings.Default.Save();

用户类型的配置,会保存到系统的 AppData Local 下面的文件夹。

可以在 Properties 文件夹中,新建多个 settings 文件,都可以通过 Properties 命名空间直接访问。并且其中的配置,会被合并到 App.config 中。

Resources.resx

添加方式:添加新建项 - 资源文件(C#)

Resources 中的内容,都是只读的,而且处理字符串,可以添加图片,音视频等多媒体文件。最终会变成嵌入资源,打包到输出的 DLL 中。

嵌入的文件,文本文件会变成 string,直接拿到,二进制文件就是 byte[]。

代码语言:javascript
代码运行次数:0
复制
// 也可以直接通过 Properties 命名空间访问。其中 Resources 就是新建的文件名。可以自定义名称。string key1 = Properties.Resources.Key1;

因为 Resources 中的内容是静态资源,可以在 xaml 中直接使用。(将 Resources 的访问修饰符修改成 public)

代码语言:javascript
代码运行次数:0
复制
// 引入命名空间xmLns:prop="cLr-namespace:WpfApp1.Properties"
Text="{x:Static prop:Resource.xxx}

Resources 的多语言写法。

Resources.resx Resources.zh-CN.resx

然后在代码中,如果如下方式切换语言项。

代码语言:javascript
代码运行次数:0
复制
Thread.CurrentThread.CurrentCulture = new CultureInfo(name:"zh-CN");Thread.CurrentThread.CurrentUICulture = new CuLtureInfo(name:"zh-CN");

可以实现多媒体文件的多语言管理。

注意,多语言使用时,多个 Resources 文件,只能有一个 Designer.cs 文件,类似下面这样,可以直接在资源管理器中,通过复制 Resources.resx 文件的方式,重命名得到 Resources.zh-CN.resx

可以通过 ResXManager 这个插件,来管理多语言版本的 Resources 文件。

ResXManager - Visual Studio Marketplace

以上的 Settings.settingsResources.resx,建议通过项目属性的方式,来有 VS 创建,会自动生成 Properties 文件夹,自动管理等。

🍉 常出现在根目录的一些文件

App.config

上面说 Settings.settings 提到了,是与 Settings.settings 联动的,无需手动修改和维护,在生成时,会变成 xxx.dll.config 出现在输出目录。

可以通过 System.Configuration.ConfigurationManager 访问,如果与 Settings.settings 联动,其实通过 Settings.settings 来编辑和访问,更方便。

appsettings.json

.NET Core 时代出来的新的程序配置文件,需要手动设置为「始终复制」,不需要生成操作。

需要安装 Microsoft.Extensions.Configuration 这个包才能访问。可以通过 ConfigurationBuilder 来构建,得到一个 IConfiguration 接口,来访问其中的配置。

icon.ico

程序的图标文件。 生成操作:内容。

原文链接: https://cloud.tencent.com/developer/article/2487674

本作品采用 「署名 4.0 国际」 许可协议进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025年1月16日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🍉 生成操作
    • 复制到输出目录
    • 生成操作配置
  • 🍉 资源词典(ResourceDictionary)
  • 🍉 常出现在 Properties 文件夹命名中间中
    • Settings.settings
    • Resources.resx
  • 🍉 常出现在根目录的一些文件
    • App.config
    • appsettings.json
    • icon.ico
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档