类项目中的配置文件app.config在打包安装后的信息获取的问题

数据库之App.config配置文件错误 在连接数据库的过程中,如果大家使用 配置文件App.config 的方式获取连接字符串的话,很有可能会遇到一些问题,我们今天就针对这些问题做一下归纳总结,并给出解决方法。 阅读详情

在一个项目中碰到这样的一个问题,做一个WORD插件,功能在类库项目中实现了,配置信息存在类库项目的配置文件app.config中,在进行打包后,获取的配置文件中的DocType节点信息时,使用以下方法  ConfigurationManager.AppSettings["DocType"]获取的值总是获取不到,跟踪调试发现值为null,上网看到类库被应用以后,ConfigurationManager.AppSettings访问的是应用程序的配置文件而不是类库所用的配置文件了,所以只有改变策略,把app.config文件也打包到安装文件中,安装后,在安装路径中找到这个文件并进行读取相应的信息,具体的实现方法如下
(.net环境下的C#代码)

//获取文件安装的路径
 Assembly SampleAssembly = Assembly.GetExecutingAssembly();
string FilePath = Path.GetDirectoryName(SampleAssembly.CodeBase.Substring(8)) + "//App.config";
//解析配置文件获取对应的值
XmlDocument xDoc = new XmlDocument();
xDoc.Load(FilePath);
string  DocType = xDoc.SelectSingleNode(@"/configuration/appSettings/add[@key='DocType']").Attributes["value"].Value;

DocType 就是要获取的值了。

 

一种强行指定dll assembly读取其相应*.dll.config配置文件的方法(又名:如何创建.net 的DCOM)

      一般来说,.net 的exe assemly会存在一个对应的*.exe.config配置文件。当需要读取配置信息的时候,可以直接通过ConfigurationManager.AppSettings[index]来读取*.exe.config中的键值,但很少存在dll assembly需要config file的情况。假如当前dll assembly名为test.dll,如果在test.dll中调用ConfigurationManager来读取test.dll.config,那么是无法成功的!

      当然,在dll assembly中要读取其*.dll.config这种需求非常少见。但是确要读取的话,可以采取以下方式,即强行制定其dll assembly的路径。

      以下代码演示的是:编写一个.net dll并将其发布为一个regasm test.dll /codebase /tlb将其发布为一个DCOM, 然后通过asp页面来调用 。其中在test.dll中的公布的方法HelloWorld()需要读取其test.dll.config中的key value.  

dll assembly代码如下:

C# version:

using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.Runtime.InteropServices;
using  System.Configuration;
using  System.IO;
using  System.Reflection;

namespace  AnotherDCOM
{
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    
public   interface  ITestClass
    {
        
string  HelloWorld();
    }

    [ClassInterface(ClassInterfaceType.AutoDispatch)]
    
public   class  SimpleClass:ITestClass
    {    
      
        
public   string  HelloWorld()
        {
            Assembly assembly;
            System.Configuration.Configuration configuration;
            ExeConfigurationFileMap map;
         
            Uri uri;
            map 
=   new  ExeConfigurationFileMap();
            assembly 
=  Assembly.GetCallingAssembly();
            uri 
=   new  Uri(Path.GetDirectoryName(assembly.CodeBase));
            map.ExeConfigFilename 
=  Path.Combine(uri.LocalPath, assembly.GetName().Name  +   " .dll.config " );
            
string  str = ConfigurationManager.OpenMappedExeConfiguration(map,  0 ).AppSettings.Settings[ " MyString " ].Value;
            
/*
            说明:如果采取如下的传统方法,读取config key
            string str = ConfigurationManager.AppSettings["MyString"];
            如果采取这种方式的话, 则assembly不会读取相应*.dll.config文件;by default,只有exe assembly的配置文件才会被load
             
*/
            
if  (str  !=   null )
            {
                
return  str;
            }
            
else
            {
                
return   " Hello World .net Another DCOM, Can't read config " ;
            }
       
        }
    }
}

VB.net version

Imports System
Imports System.Runtime.InteropServices
Imports System.Reflection
Imports System.Configuration
Imports System.IO


Namespace NetDcom
    
< InterfaceType(ComInterfaceType.InterfaceIsIDispatch) >  Public Interface ITestClass
        Function HelloWorld() As String
    End Interface

    
< ClassInterface(ClassInterfaceType.AutoDispatch), ProgId( " NetDcom.SimpleClass " ), ComVisible(True) >  Public Class SimpleClass
        Implements ITestClass
        Public Function HelloWorld() As String Implements ITestClass.HelloWorld
            Dim assembly As Assembly
            Dim configuration As Configuration
            Dim map As ExeConfigurationFileMap
            Dim str As String
            Dim uri As Uri
            map 
=  New ExeConfigurationFileMap
            [assembly] 
=  assembly.GetCallingAssembly
            uri 
=  New Uri(Path.GetDirectoryName([assembly].CodeBase))
            map.ExeConfigFilename 
=  Path.Combine(uri.LocalPath, ([assembly].GetName.Name  &   " .dll.config " ))
            str 
=  ConfigurationManager.OpenMappedExeConfiguration(map,  0 ).AppSettings.Settings.Item( " MyString " ).Value

            If String.IsNullOrEmpty(str) 
<>  True Then
                HelloWorld 
=  str
            Else
                HelloWorld 
=   " Hello World, .net DCOM(vb.net) "
            End If


        End Function

    End Class
End Namespace


 

app.config配置文件如下(编译后会自动生成test.dll.config文件):

 

<? xml version = " 1.0 "  encoding = " utf-8 "   ?>
< configuration >
  
< appSettings >
    
< add key = " MyString "  value = " Hello World " />     
  
</ appSettings >
</ configuration >

编译发布之后,运行以下command将其注册为DCOM

regasm test.dll /codebase /tlb

说明:如果.net dll要注册成为COM的话,需要几个必备的条件:

1. dll要设置相应的System.runtime.InteropServices的相应attribute,如山代码所示。

2. (C#中)assemblyinfo.cs中, comvisible要设置为true。

3. 生成dll assembly的时候,一定要选中 Register for ComInterop复选框,如下所示

然后,通过asp调用该DCOM如下: 

<%
set  obj = CreateObject( " AnotherDCOM.SimpleClass " )
Response.write obj.HelloWorld()
%>

通过procmon我们可以看到,该dll.config被争取读取了:) 

数据驱动的细胞动力学:从高通量成像到机器学习预测的完整实践指南 细胞动力学研究细胞群体随时间变化的规律和命运决策机制,是理解生命过程的基础。其核心原理在于将传统的定性观察转化为定量分析,通过高通量成像、单细胞测序等技术获取多维时序数据,并运用机器学习与统计模型挖掘数据中的深层模式。这一技术价值在于实现从“描述现象”到“预测行为”的范式转变,显著提升研究的客观性和可重复性。在应用场景上,它广泛应用于药物筛选、疾病机制研究和发育生物学等领域,能够加速靶点发现和疗效评估。本文聚焦于数据驱动的细胞动力学分析,详细拆解了从实验设计、图像处理、单细胞追踪到特征工程与建模预测的端到端 阅读详情

相关推荐

告别混乱!AutoSar BswM模式管理实战:手把手教你配置Rule与ActionList(附避坑指南)

本文详细解析了AutoSar BswM模式管理的实战配置,重点介绍了Rule与ActionList的高效组合方法,帮助开发者避免常见陷阱。通过具体案例演示了从基础到复杂的配置步骤,包括模式仲裁、逻辑表达式构建及ActionList优化策略,提升汽车电子系统的协调性与可靠性。

weixin_27066963的博客 258

C#中App.config文件引入外部配置后不能获取外部配置中的值(Visual Studio中将文件添加到Build)

  有时候,我们会把配置文件中的某些配置项拆分配置,放在不同的config配置文件中进行管理,例如为开发环境(Dev)、测试环境(Test)、生产环境(Production)的各种配置,通过以下方法进行拆分: <?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework

耕耘虫 926

优刻得首个「国产千卡智算集群」落地,支持智源千亿大模型训练

在人工智能引领的时代浪潮中,算力已成为技术进步与创新的核心驱动力。面对当下AI算力需求的飙升、高端AI芯片供应受限的挑战,加之OpenAI带来的技术封锁,唯有坚定不移的发展自主可控的国产技术方案,持续壮大国产智算集群规模,才能一路突破围追堵截,进一步促进国产大模型产业生态繁荣。集群还提供了完善高效的软件栈工具,集成多种主流的深度学习编程框架,通过测试验证,确保了对行业领先人工智能模型的高效支持,做到开箱即用,用户可快速投入模型的开发和部署,加速了其在人工智能领域的布局和发展。方面取得了显著成效。

Ucloud_TShare的博客 1471

关于app.config配置问题

无论在我们敲机房的时候还是在敲牛腩的时候为了方便都需要我们进行进行文件的配置,这样可以方便我们以后配置。 APP.config(应用程序配置文件):应用程序配置文件是标准的XML文件,XML标记和属性是区分大小写的。它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必编译应用程序。 配置文件的根节点是configuration。我们经常访问的是appSettings,它是由.Net...

成长永远没有尽头 1913

告别纯代码:用Visual Studio为LabVIEW封装一个‘即插即用’的海康VisionMaster控件

本文介绍如何利用Visual Studio为LabVIEW封装一个‘即插即用’的海康VisionMaster控件,解决传统集成方式中的代码臃肿和维护困难问题。通过.NET控件封装核心功能,实现LabVIEW与VisionMaster的高效对接,显著提升工业自动化开发效率。

weixin_33744854的博客 504

从FP16到FP8:我是如何让Stable Diffusion 3.5提速40%而不丢画质的

本文分享了StableDiffusion模型优化的实战经验。通过FP8精度转换、分层处理敏感模块,实现显存占用降低35%、推理速度提升40%。文章详细介绍了提升画质的五大技巧、本地/云端/移动端部署方案,以及二次元模型定制等垂直领域应用。同时总结了硬件兼容性、数据质量等七大常见陷阱,并强调持续监控和伦理考量。作者指出未来应关注MoE架构、注意力机制优化等方向,认为技术优化是持续追求性能与质量平衡的过程。

达则兼济天下 1186

C# 读取app.config配置文件 节点键值,提示 "System.TypeInitializationException 类型初始值设定项引发异常" 错误的解决方案

新建C#项目,在app.config中添加了appSettings项,运行时出现”配置系统未能初始化”的错误,MSDN里写到,如果配置文件中包含 configSections 元素,则 configSections 元素必须是 configuration 元素的第一个子元素。”,将自己添加的appSettings放到configSections 后,则正常。

caowei880123的专栏 1万+

【面试系列】软件架构师 高频面试题及详细解答

本文介绍了软件架构师岗位的初级、中级和高级面试题及详细解答,涵盖了系统设计、面向对象设计、分布式系统、云计算技术、性能优化等关键领域。通过这些问题和解答,候选人可以深入理解软件架构师的核心职责和技能要求。此外,文章总结了在面试中需要掌握的常考知识点,包括架构模式、分布式系统管理、安全性、数据管理和DevOps实践。通过掌握这些知识点,软件架构师能够有效设计和指导复杂系统的结构,确保系统的可扩展性、性能和维护性。

在路上的专栏 850

【C#】Config配置文件的读写,及无法写入/保存配置文件的问题

目的: 一些数据为了在项目打包好后也能方便的修改和调用,通常会把这些数据放到配置文件中,避免硬编码,修改配置文件内容更方便,而不用修改源代码。 使用: 在解决方案资源管理器中找到App.config文件,这个XML文件就是配置文件。在该XML文件中找到&lt; appSettings &gt;节点,按如下方法添加内容即可: &lt;appSettings&gt; &lt;add ke...

weixin_33695082的博客 1377

化工管道设计软件:CAESAR II二次开发_(6).API接口与函数库

自定义函数库是开发者根据特定需求编写的函数集合。这些函数可以扩展CAESAR II的功能,实现更复杂的管道设计任务。自定义函数库通常需要开发者具备一定的编程基础,能够理解和编写与CAESAR II接口兼容的代码。定义函数:在Python或其他编程语言中定义所需的函数。注册函数:将自定义函数注册到CAESAR II的函数库中。调用函数:在CAESAR II中调用自定义函数,实现特定功能。假设我们需要创建一个自定义函数库,用于批量修改管道节点的坐标。定义函数:在Python中定义一个函数,用于批量修改节点坐标。

kkchenjj的博客 1726

【ACP】2025-最新-疑难题解析- 练习二汇总

全球加速是优化公网访问的,负载均衡是分发流量的,公网 NAT 网关是处理公网 IP 的,高速通道是建私网连接但不直接提供固定私网地址功能。C 是客户端加密方式,D 是 ECS 云盘加密,都不属于 OSS 服务器端加密。某企业想使用云服务器 ECS + 负载均衡 SLB + 弹性伸缩 (Auto Scaling) 的架构搭建一个企业级门户网站,技术负责人对于负载均衡和弹性伸缩配合使用没有经验,于是将他理解的两种产品配合使用的一些技术细节列成了一个表单,并请作为架构师的您帮他做一下鉴别,以下哪些项是正确的?

jundao1997的专栏 293

如何获取.NET应用程序设置文件user.config的路径

如何获取.NET应用程序设置文件user.config的路径朱二(2008.11 转载请注明作者) 最近在开发一个.NET项目的时,需要在客户端软件中保存用户的一些设置,比如是否在登录框中保存上次登录名等信息,就用到了.NET中的应用程序设置功能。如果使用用户范围的设置,程序会在磁盘上创建user.config用来存储修改后设置值,对 user.config所在的文件夹,我产生了一些兴趣,

人生倒计时 5653

RK3588部署YOLOv11与RKNN全流程教程

本文详细介绍了在RK3588开发板上部署YOLOv11目标检测模型的全流程。主要内容包括:PC端CUDA/cuDNN环境配置、Anaconda虚拟环境搭建、RKNN Toolkit2安装;YOLOv11模型从PyTorch到ONNX再到RKNN的格式转换;以及RK3588开发板的系统配置、RKNPU驱动安装和最终推理实现。教程提供了完整的代码示例,帮助开发者快速在边缘设备上实现高效的AI推理应用,涵盖从环境准备到实时检测的全套解决方案。

FJN110的博客 374

ESP32-P4原生USB Host驱动鼠标实战指南

USB Host是嵌入式系统实现外设即插即用的核心能力,其本质是主控制器通过硬件xHCI协议栈主动枚举、配置并轮询HID类设备。相比软件模拟方案,原生USB Host具备DMA传输、硬件中断调度和实时Descriptor解析等技术优势,显著提升响应确定性与协议兼容性。该能力在工业HMI、医疗设备人机交互、无PC中控等场景中具有关键工程价值——尤其当需稳定支持1000Hz高回报率鼠标、多键宏、DPI切换及滚轮精准控制时。ESP32-P4凭借内置USB OTG控制器与SDK深度集成的usbh_hid组件,成为当

weixin_34189116的博客 341

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

类项目中的配置文件app.config在打包安装后的信息获取的问题【转】

在一个项目中碰到这样的一个问题,做一个WORD插件,功能在类库项目中实现了,配置信息存在类库项目的配置文件app.config中,在进行打包后,获取的配置文件中的DocType节点信息时,使用以下方法 ConfigurationManager.AppSettings["DocType"]获取的值总是获取不到,跟踪调试发现值为null,上网看到类库被应用以后,ConfigurationManager...

weixin_30492047的博客 87

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Vue项目打包移动端App(App打包教程),简便直接

Vue打包成.apk安装的过程中遇到的问题问题1:打包成的apk在真机上显示空白界面项目文件路径引用错误,导致文件加载为404vue打包后的文件时存在于dist目录下的,也就是说dist目录作为根目录。在dist目录中启动一个本地服务其访问地址为http://localhost:8080/index.html,即可访问首页dist目录下的index.html文件并加载对应的js,css文件,也就是说文件启动根目录是和dist目录中的index.html是平级的。......

【优快云】 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

cordova打包app热更新问题

定义:基于 cordova 框架能将web应用 (js, html, css, 图片等) 打包成 App。当 App 在终端上安装后,不需要重新下载app,实现内壳更新。 原理:1.在项目根目录的config.xml文件中添加指向服务器的地址 2.在www目录中添加chcp.json配置文件,配置指向服务器,更新时间,更新方式 步骤:(进入项目目录) 1、在cor...

wx13227855087的博客 2714

WPF:exe.config 或 app.config文件

在WPF工程里面会有两个config,一个是.exe.config,另一个是app.config。 如果需要用到config去保存设置,需要在app.config里面添加settings,如下修改: <?xml version="1.0"?> 读取的时候,在代码中使用如下方法: string debug = System.C...

ayouayouwei 2737

vue修改config后怎么生效_Vue项目创建build后可修改的配置文件

需要一个配置文件,能在项目打包(build)时不被打包,方便修改,同时项目刷新时读取改配置。实现方法如下:1.在项目的static目录下创建project.config.json文件(名称随意,建议带上config关键字,易于辨识)内容为json格式:1 {2 "serviceUrl": "http://localhost:30001/service/api/",3 "baseUrl": ...

weixin_36324426的博客 2336

若依(RuoYi-App)项目安装与使用手册

若依(RuoYi-App)是基于uniapp+uView构建的移动端框架,支持H5、APP、微信小程序等多种平台。该项目设计了高度模块化的结构,便于开发者快速上手和定制。以下是其核心目录结构及其简要说明: ```plaintext . ├── components # 组件目录,存放自定义组件 ├── pages # 页面目录,各个功能页面存放处...

gitblog_00174的博客 3782

【亲测免费】 开源项目《e-learning-app》安装与使用指南

开源项目《e-learning-app》安装与使用指南 一、项目目录结构及介绍 欢迎来到 e-learning-app,这是一个由 Hash Studios 开发的旨在提供便捷移动学习体验的开源应用。下面是本项目的目录概览及其主要组成部分的简要说明: ├── src # 源代码主目录 │ ├── components # UI组件...

gitblog_00200的博客 816

App.Config配置文件说明

前言   在项目中,为了使代码更加灵活,更加方便调整,我们都在config中添加许多配置信息,一般可以选择.NET自带的配置文件形式app.config或者web项目中的web.config来完成配置工作。 在项目中添加配置文件   在WindowsForm应用中,我们可以在新建的WindowsForm应用上右击——添加——新建项——应用程序配置文件。 配置文件内容   新添加的配置文件

习惯成自然 3245

C#项目实例中读取并修改App.config文件

C#项目是指一系列独特的、复杂的并相互关联的活动,这些活动有着一个明确的目标或目的,必须在特定的时间、预算、资源限定内,依据规范完成。项目参数包括项目范围、质量、成本、时间、资源。 1. 向C#项目实例中的项目添加app.config文件: 右击C#项目实例中项目名称,选择“添加”→“添加新建项”,在出现的“添加新项”对话框中,选择“添加应用程序配置文件”;如果项目以前没有配置文件,则

CHEN_DO_IT的专栏 956
上一篇: 代码生成器开发笔记(3)-界面设计
下一篇: 分布式数据库操作笔记
DICOMV3PACS
博客等级 码龄17年 161粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值