.NET项目如何管理资源及配置文件_哔哩哔哩 .NET 项目的资源及配置文件(视频中的思维导图)
本文为以上视频的笔记
Build actions for files - Visual Studio (Windows) | Microsoft Learn
这个是跟生成操作
独立的一个配置,顾名思义,就是指是否将指定文件复制到输出目录。
需要额外设置输出到生成目录
1 可以通过 GetContentStream 获取内容
var stream = Application.GetContentStream(new Uri("readme.txt", UriKind.Relative)).Stream;
2 常用于
readme.txt,C/C++ 类库,ini 文件等
3 注意点
路径中不能有 #
不推荐,有更好的方法,如后面的 Resources.resx
将会被嵌入到程序集文件中,可以通过 GetManifestResourceStream
读取。
System.Reflection.Assembly.GetManifestResourceStream("WpfApp1.readme.txt");// WpfApp1 是程序集的名称
1 常用于
不希望用户看到,且只读的文件
嵌入到输出的程序集文件中
1 可以直接在 xaml 中访问
// 将 pixel.jpg 的生成操作设置成资源<Image Source="../Assets/pixel.jpg"/>
// 这里 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中使用的资源
各种 .cs 文件
xaml 预编译成 baml
App.xaml 以外的各种 .xaml 文件
App.xaml 文件
将图片设置成这个,启动时会使用。很少使用。
以上就是 生成操作
的一些配置选项,常用的就是 无
,内容
,资源
。
FrameworkElement 的属性 Resources,每个 FrameworkElement 都有,一般在 xaml 中定义,就是常写 Style 的地方。
注意不要和 Properties.Resources
搞混
在 Framework 项目中自带,在 .NET Core 项目中,可以手动新建。或者通过添加新项 - 设置文件(C#项) 的方式添加。
Settings.settings 和 App.config 会自动联动,修改 Settings.settings 中的值,会自动更新 App.config。 反过来,修改 App.config 中的值,会提示是否更新 Settings.settings。 所以,如果需要修改值,一般只需要操作 Settings.settings。
Settings.settings
会自动生成一个 Settings.Designer.cs
,里面有一个单例的 Settings
实例,可以快速访问其中的配置。
string value = Properties.Settings.Default.Key1;
在生成之后,会在输出目录生成类似 WpfApp.dll.config
这样的文件,里面就是记录的 Settings.settings
的配置。
对于应用程序
类型的配置,配置是只读的,类似全局常量。对于用户
类型的配置,可以修改并保存。
// 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
中。
添加方式:添加新建项 - 资源文件(C#)
Resources 中的内容,都是只读的,而且处理字符串,可以添加图片,音视频等多媒体文件。最终会变成嵌入资源,打包到输出的 DLL 中。
嵌入的文件,文本文件会变成 string,直接拿到,二进制文件就是 byte[]。
// 也可以直接通过 Properties 命名空间访问。其中 Resources 就是新建的文件名。可以自定义名称。string key1 = Properties.Resources.Key1;
因为 Resources 中的内容是静态资源,可以在 xaml 中直接使用。(将 Resources 的访问修饰符修改成 public)
// 引入命名空间xmLns:prop="cLr-namespace:WpfApp1.Properties"
Text="{x:Static prop:Resource.xxx}
Resources 的多语言写法。
Resources.resx
Resources.zh-CN.resx
然后在代码中,如果如下方式切换语言项。
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.settings
和 Resources.resx
,建议通过项目属性的方式,来有 VS 创建,会自动生成 Properties 文件夹,自动管理等。
上面说 Settings.settings
提到了,是与 Settings.settings
联动的,无需手动修改和维护,在生成时,会变成 xxx.dll.config 出现在输出目录。
可以通过 System.Configuration.ConfigurationManager
访问,如果与 Settings.settings
联动,其实通过 Settings.settings
来编辑和访问,更方便。
.NET Core 时代出来的新的程序配置文件,需要手动设置为「始终复制」,不需要生成操作。
需要安装 Microsoft.Extensions.Configuration
这个包才能访问。可以通过 ConfigurationBuilder 来构建,得到一个 IConfiguration 接口,来访问其中的配置。
程序的图标文件。 生成操作:内容。
原文链接: https://cloud.tencent.com/developer/article/2487674
本作品采用 「署名 4.0 国际」 许可协议进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。