gpt4 book ai didi

.net - 当通过 COM 调用时,我可以从 .net 代码使用/访问 app.config

转载 作者:行者123 更新时间:2023-12-04 11:45:26 25 4
gpt4 key购买 nike

我有一组现有的 .net 库,我希望从 Excel VBA 调用(该部分工作正常)。这些库依赖于 app.config 中的设置。我知道我可以在 excel.exe.config 文件中输入这些设置(与 excel.exe 放在同一目录中),但这对我来说似乎并不是一个非常易于管理的解决方案,因为我可以看到如果不止一个应用程序想要这样做。

我的问题很简单:有没有什么方法可以让 COM 暴露的 dll 引用它们各自的配置文件?

示例 app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="test" value="Hello world!" />
</appSettings>
</configuration>

示例 C#:
namespace ExcelVbaFacingCode
{
public class SimpleAppSettingReader
{
public string GetValue(string key)
{
return ConfigurationManager.AppSettings[key];
}
}
}

示例 VBA:
Public Sub Test()
Dim Test As New SimpleAppSettingReader
Dim sampleValue As String
sampleValue = Test.GetValue("test")
MsgBox "Value: '" + sampleValue + "'", vbOKOnly
End Sub

最佳答案

每当 ConfigurationManager.AppSettings被调用,它会自动打开执行程序集的配置文件。在您的情况下,Excel 是正在执行的应用程序,因此您无法打开 .Net DLL 的配置文件。

这样做是有原因的。可以从多种类型的应用程序调用单个 DLL,每种应用程序可能有不同的要求(例如,可能还有不同的数据库)。因此,应用程序指定设置,而不是引用的程序集。

我认为你已经建议的是最好的方法来做到这一点。我知道您似乎在复制配置文件,这意味着您有重复的内容需要担心代码何时更改,但这是最好的做法。

关于.net - 当通过 COM 调用时,我可以从 .net 代码使用/访问 app.config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2288575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com