如何在Visual Studio多项目C#解决方案中设置公共抽象通用值?
C# 多项目统一共享常量/配置方案
下面提供3种不同场景下的可行实现方式,可根据你的需求选择:
方案1:公共共享类库(最推荐,适合编译期固定的常量)
这是最常用的常量共享方案,如果你之前尝试失败大概率是类的访问修饰符或者项目引用配置不对:
- 在你的解决方案中新建一个*类库(Class Library)*类型的项目,命名可以用
[你的解决方案名].Common - 在该类库中新建静态常量类,示例代码如下:
namespace MySolution.Common; // 访问修饰符要设为public才能被其他项目调用 public static class DbCommonConstants { // 编译期固定的常量用const修饰 public const string DefaultDbSchema = "business"; public const int MaxQueryBatchSize = 1000; // 需要支持后续修改不需要全量编译的用static readonly public static readonly string DefaultConnStringKey = "MainDb"; }
- 所有需要用到常量的子项目,右键
依赖项->添加项目引用,勾选刚才新建的公共类库项目,就可以直接调用其中的常量,完全不需要重复编写
方案2:全局共享配置文件(适合需要运行时修改的配置值)
如果你需要这些值可以在程序发布后修改,不需要重新编译代码,可以用全局共享配置的方案:
- 在解决方案根目录新建公共配置文件,比如
appsettings.json,写入你需要的公共配置:
{ "DbConfig": { "ConnectionString": "你的数据库连接串", "CommandTimeout": 30, "DefaultSchema": "dbo" } }
- 在解决方案根目录新建
Directory.Build.props文件,写入以下配置,自动把根目录的配置文件同步到所有子项目的输出目录:
<Project> <ItemGroup> <None Include="$(SolutionDir)appsettings.json" CopyToOutputDirectory="PreserveNewest" Link="appsettings.json" /> </ItemGroup> </Project>
- 所有子项目安装
Microsoft.Extensions.Configuration相关Nuget包,统一读取该配置文件即可,不需要每个项目单独维护配置
方案3:全局共享代码文件(轻量场景,不想新增类库)
如果你的常量不多,不想专门新建一个类库项目,可以用全局共享代码文件的方案:
- 在解决方案根目录新建
CommonConstants.cs文件,写入你的常量定义 - 同样在根目录的
Directory.Build.props中加入以下配置,让所有子项目自动包含这个代码文件:
<Project> <ItemGroup> <Compile Include="$(SolutionDir)CommonConstants.cs" Link="CommonConstants.cs" /> </ItemGroup> </Project>
- 配置完成后所有子项目都可以直接访问该文件中定义的常量,不需要额外引用项目
常见踩坑说明
你之前找不到教程中提到的配置文件,大概率是教程对应的是.NET Framework框架的app.config,.NET Core/.NET 5+之后默认不再生成该配置文件,改用appsettings.json作为默认配置文件。
内容的提问来源于stack exchange,提问作者not_a_generic_user
相关产品推荐
相关产品推荐

