代码之家  ›  专栏  ›  技术社区  ›  Per Hornshøj-Schierbeck

当作为COM宿主时,.NET程序集从何处读取其配置?

  •  2
  • Per Hornshøj-Schierbeck  · 技术社区  · 16 年前

    好的,我创建了一个.NET程序集,它在我的ASP.NET网站上运行良好。我现在想把它作为COM托管,这样我就可以在旧的ASP网站上使用它了。除了它不会从配置文件中读取appsettings之外,它还可以工作。

    我认为它应该从我用regasm注册程序集的同一文件夹以及.dll所在的位置读取它。我尝试将配置文件复制到另外两个文件中(以防它从除“assembly file name”+.config之外的另一个命名文件读取) 这两个文件分别是app.config和application.config-似乎没有从其中读取任何文件。

    当作为COM宿主时,.NET程序集从何处读取其配置?

    3 回复  |  直到 11 年前
        1
  •  1
  •   Alfred Myers    16 年前

    如果“com”是指COM应用程序,则应将配置放在以exe命名的文件中。 yourapp.exe->yourapp.exe.config

    如果你指的是COM+,那么看看 http://blogs.msdn.com/heikkiri/archive/2005/11/10/491568.aspx

        2
  •  0
  •   Thorsten Dittmar    16 年前

    如果我错了,sombody会纠正我,但我认为dll根本不会读取配置文件。即使你在技术上 可以 为DLL项目创建一个配置文件(使用项目属性),我认为您不应该配置这样的DLL,我认为框架不支持这样的配置。

    现在有两种方法:

    1. 让调用者将各自的设置值作为参数传递给对象
    2. 生成一个读取设置本身的方法,并在创建对象后调用该方法。

    编辑
    要检查,您应该命名配置文件 application-name.config.xml 类似于WebForms应用程序。但正如我所说,我怀疑它是否会起作用…

        3
  •  0
  •   Per Hornshøj-Schierbeck    16 年前

    好吧,我找到了一个让我快乐的解决方案。

    我最终在组件服务中托管了COM对象。在我选择了属性并选择了激活选项卡的包中,我在“应用程序根目录”中输入了配置文件的位置。现在,为了使其正常工作,我必须将配置文件重命名为application.config,并且不知何故,我还必须在相同的位置创建一个名为application.manifest的新文件,其中包含以下数据:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    </assembly>
    

    这实际上解决了让“dll”读取配置文件的问题——实际上,由于组件服务是主机(代替exe/website),它决定了位置/config。

    呜呜-谢谢大家的意见-我没想到托尔斯滕之前提到的问题。