Excel-DNA迁移至.NET 6:appsettings.json分发及示例代码问询
Excel-DNA + .NET 6 中 appsettings.json 的使用方案
分发方式选择
- 单独分发:可直接将
appsettings.json与XLL文件放在同一目录,.NET 6配置系统会自动识别加载,适合需要后续修改配置的场景。 - 嵌入到XLL形成单一文件:若要单文件分发,可将
appsettings.json设为嵌入资源,通过代码读取嵌入内容加载配置,无需额外分发配置文件。
嵌入配置文件的实现步骤
- 设置嵌入资源:在Visual Studio中右键点击
appsettings.json→ 属性 → 将“生成操作”改为嵌入的资源。 - 读取嵌入资源并加载配置:
使用.NET的ConfigurationBuilder结合嵌入资源流构建配置,示例代码如下:using System.Reflection; using Microsoft.Extensions.Configuration; public static class ConfigLoader { public static IConfiguration LoadConfig() { var assembly = Assembly.GetExecutingAssembly(); // 资源名称格式:[项目命名空间].[文件名],例如项目名为MyExcelAddin则写MyExcelAddin.appsettings.json using var stream = assembly.GetManifestResourceStream("YourNamespace.appsettings.json"); var config = new ConfigurationBuilder() .AddJsonStream(stream) .Build(); return config; } } - 使用配置:在Excel-DNA的初始化或函数代码中调用加载逻辑:
using ExcelDna.Integration; public class MyAddin : IExcelAddIn { public void AutoOpen() { var config = ConfigLoader.LoadConfig(); var apiUrl = config["ApiSettings:BaseUrl"]; // 后续业务逻辑 } [ExcelFunction(Description = "获取配置中的API地址")] public static string GetApiUrl() { var config = ConfigLoader.LoadConfig(); return config["ApiSettings:BaseUrl"] ?? "未配置"; } }
单独分发配置文件的简化用法
若选择单独分发,可简化配置加载逻辑:
public static IConfiguration LoadConfig() { var config = new ConfigurationBuilder() .SetBasePath(System.IO.Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .Build(); return config; }
reloadOnChange: true支持不重启Excel的情况下修改配置文件生效。
内容的提问来源于stack exchange,提问作者Tom Baxter
相关产品推荐
相关产品推荐

