You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移至VS2017项目系统后,如何在自动生成AssemblyInfo时添加assembly:ThemeInfo属性

在VS2017自动生成AssemblyInfo.cs时添加ThemeInfo属性的方法

嘿,这个问题我之前也踩过坑——VS2017的新项目系统把AssemblyInfo.cs的生成完全自动化了,直接去改自动生成的文件根本没用,下次编译就会被覆盖。不过不用禁用自动生成,有两个简单靠谱的办法搞定:

方法一:添加自定义特性文件(最推荐)

完全不用碰自动生成的AssemblyInfo,直接在项目里新建一个类文件(比如命名为AssemblyThemeInfo.cs),然后在里面单独放ThemeInfo特性就行,编译器会自动合并所有程序集级别的特性:

using System.Windows;

[assembly: ThemeInfo(
    ResourceDictionaryLocation.None, // 主题特定资源字典的位置
                                     // 若在主题程序集中使用,设为ResourceDictionaryLocation.SourceAssembly
    ResourceDictionaryLocation.SourceAssembly // 通用资源字典的位置
)]

这个文件里不需要其他代码,就放这一段就够。编译时,自动生成的AssemblyInfo里的常规特性和这个文件里的ThemeInfo会一起生效,完美解决WPF查找Themes\generic.xaml的问题。

方法二:修改项目文件(.csproj)配置

如果你更喜欢通过项目配置来管理,也可以直接编辑.csproj文件,在<PropertyGroup>节点里加入以下配置:

<AssemblyThemeInfo>
    <ResourceDictionaryLocation>None</ResourceDictionaryLocation>
    <GenericDictionaryLocation>SourceAssembly</GenericDictionaryLocation>
</AssemblyThemeInfo>

不过这种方式不如第一种直观,后续要调整特性参数的话,修改代码文件会更方便。

原理说明

VS2017的自动AssemblyInfo生成机制只负责处理版本、公司信息这类常规特性,它不会阻止你在其他文件中添加额外的程序集级特性。编译器在编译时会收集所有文件中的[assembly:]标记特性,合并到最终的程序集元数据里,所以完全不用担心冲突。

内容的提问来源于stack exchange,提问作者Lennart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:05:36