【问题标题】:Config file in c#c#中的配置文件
【发布时间】:2010-09-26 11:18:43
【问题描述】:

我有一个用户控件库解决方案,它具有以下内容

用户控件 ---用户控制项目

  ---UserControl Test Project

在我的测试项目中,我可以将我的用户控件添加到工具箱中。当我将它拖放到我的表单中时,它失败了。我输入日志,发现我的用户控件读取了一个配置文件。配置文件被标记为始终复制并存在于 obj\debug 和 bin\debug 目录/中。

但是,当我将用户控件拖到我的测试项目中的表单时,它正试图从

获取文件

C:\Documents and Settings\jondoe\Local Settings\Application Data\Microsoft\VisualStudio\8.0\ProjectAssemblies\vqjlihdl01

以上是这个的结果

string pluginAssemblyPath = Assembly.GetExecutingAssembly().Location;
            DirectoryInfo dirInfo = new DirectoryInfo(pluginAssemblyPath);
            pluginAssemblyPath = pluginAssemblyPath.Replace(dirInfo.Name.ToString(),"");
            string configFilePath = pluginAssemblyPath + "FileConfig.xml";

我会假设如果我在调试模式下编译,该文件应该在 obj\debug 下,并且应该是我的程序集路径。什么给出了或者我需要做一些设置才能让它正确运行,以便它可以在正确的位置找到我的配置文件?

【问题讨论】:

    标签: c# file config


    【解决方案1】:

    当心,我发现 DesignMode 属性是不可靠的,如果您在窗体上的另一个控件上有一个控件(例如)。它似乎只适用于直接放置在设计表面上的控件。

    【讨论】:

      【解决方案2】:

      您在设计时需要配置文件吗?如果没有,您可以更改代码以测试它是否在设计时运行,例如:

      if (this.Site != null && this.Site.DesignMode)
      {
          ... design time behavior
      }
      else
      {
          ... runtime behavior (read config file)
      }
      

      【讨论】:

        【解决方案3】:

        您的用户控件真的需要读取配置文件吗?使用户控件成为单独项目的主要优点之一是您可以在多个其他项目中重用它。如果您的用户控件必须读取配置文件,这会使重用它变得更加困难和复杂(如您所见)。

        如果您实际上不需要在多个项目中使用该控件,解决当前问题的最快方法可能是将用户控件合并到您的主项目中(即不要将其作为单独的项目保留)。

        【讨论】:

          【解决方案4】:

          我必须在各种项目中使用我的控件,因此我使用配置文件来根据项目调整设置。

          在我以类似方式完成工作的其他项目中,我没有看到这个问题。它总是使用 obj\debug 路径来构建程序集执行路径

          【讨论】:

          • 通常你会把它放在我的回答下面的 cmets 中(我假设你在回复我)。答案是为了,嗯,答案。 :-)
          猜你喜欢
          • 2011-02-09
          • 2010-10-30
          • 2012-07-30
          • 2014-09-16
          • 1970-01-01
          • 2011-04-21
          • 2010-10-10
          • 1970-01-01
          • 2016-05-20
          相关资源
          最近更新 更多