c# – Settings.Default.始终在持久性存储(XML文件)中返回默认值
我最近在C#(.Net 2.0)中写了一个DLL,其中包含一个需要IP地址的类.我的同事改变了类从“.dll.config”(
XML)文件中检索IP – 这显然是由他创建的“应用程序设置”文件(Settings1.settings)自动生成的.这样做的好处是允许最终用户随意更改XML / config文件中的IP地址.
不幸的是,当我从树中检查他的代码并尝试编译(或使用)这个新代码时,调用此DLL的任何应用程序只能获取默认值,而不是文件中的值. 调用配置文件的构造函数如下所示: public class form : System.Windows.Forms.Form { public form() { // This call is required by the Windows Form Designer. InitializeComponent(); IP = IPAddress.Parse(Settings1.Default.IPAddress); } } 我发现a reference to this problem on the MSDN forums的用户说:
>这是否意味着我无法在配置文件中存储DLL的外部值? (我的同事以某种方式使这项工作…) Decker:这有点帮助不幸的是,我正在将这个DLL写入规范,所以我实际上没有访问应用程序的配置文件.如上所述,我的同事创建了一个“Settings1.settings”文件.我当时不明白这一点,但现在似乎添加“1”可以将它从任何调用它的应用程序的设置空间中删除. 我想我想知道的是为什么DLL似乎找不到位于同一目录下的配置文件.跟踪代码一步一步显示没有任何东西. 除此之外,我可以将我的程序集的“输出类型”从“类库”更改为“Windows应用程序”,并在我的DLL代码的开头添加以下行: [STAThread] public static void Main(string[] args) { System.Windows.Forms.Application.Run(new form()); } 当我运行它,它会生成一个不同的配置文件(“.exe.config”),我可以改变它,并从文件中拉出新的数据.所以我有点困惑.有任何想法吗? 解决方法
我正在处理原型中的一个应用程序中的这个确切问题.虽然Decker建议将配置文件一起入侵,但我认为这是一个非常不方便的手动操作,作为构建周期的一部分.而不是我决定最干净的解决方案是让每个库解析自己的library.dll.config文件.它仍然不完美,它需要一些额外的锅炉代码,但它似乎是唯一的方式来绕过拜占庭的方式.Net处理这些app.config文件.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |