ComVisible .NET程序集和app.config

cho*_*dze 5 c# app-config comvisible .net-4.0

  • 我有.NET程序集,其中一些类标记为 ComVisible
  • 此程序集已注册 regasm /codebase "assembly_path"
  • 我有app.config名称(实际 - - MyAssemblyName.dll.config)在程序集的文件夹中
  • 我通过我的程序集访问appSettings ConfigurationManager.AppSettings["SettingName"]
  • 我有VBScript文件,通过它创建我的COM对象 CreateObject("...")
  • 创建对象时(来自VBScript),ConfigurationManager.AppSettings["SettingName"]返回null.它看起来像程序集没有看到配置文件.

我应该怎么做才能使它可行?

cho*_*dze 5

正如Komyg所说,一种可能的方法是直接读取配置文件,而不是使用ConfigurationManager的嵌入式行为。对于那些将有相同问题的人:

ConfigurationManager.AppSettings["SettingName"]
Run Code Online (Sandbox Code Playgroud)

您可以使用:

var _setting = ConfigurationManager.AppSettings["SettingName"];
// If we didn't find setting, try to load it from current dll's config file
if (string.IsNullOrEmpty(_setting))
{
    var filename = Assembly.GetExecutingAssembly().Location;
    var configuration = ConfigurationManager.OpenExeConfiguration(filename);
    if (configuration != null)
        _setting = configuration.AppSettings.Settings["SettingName"].Value;
}
Run Code Online (Sandbox Code Playgroud)

这样,您将始终使用YourAssemblyName.dll.config程序集文件夹中文件的读取设置。它将允许您还使用其他功能app.config(例如appSettingfile属性),如果您将使用XPath或类似功能,则这些功能将不可用。