[英]Config file in c#
我有一个UserControl库解决方案,其中包含以下内容
UserControl --- UserControl项目
---UserControl Test Project
在测试项目中,我可以将用户控件添加到工具箱中。 当我将其拖放到表单中时,它将失败。 我输入日志记录,发现我的usercontrol读取配置文件。 配置文件被标记为始终复制,并且存在于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下,并且这应该是我的汇编路径。 是什么给了我,或者我需要做一些设置才能使其正确运行,以便它可以在正确的位置找到我的配置文件?
当心,我发现在窗体上另一个控件(例如)上有一个控件的情况下,DesignMode属性不可靠。 它似乎只对直接放置在设计图面上的控件有效。
您在设计时需要配置文件吗? 如果没有,您可以更改代码以测试其是否在设计时运行,例如:
if (this.Site != null && this.Site.DesignMode)
{
... design time behavior
}
else
{
... runtime behavior (read config file)
}
您的用户控件是否真的需要读取配置文件? 使用户控制一个单独的项目的主要优点之一是可以在多个其他项目中重用它。 如果您的用户控件必须读取配置文件,则使重用它变得更加困难和复杂(如您所见)。
如果您实际上不需要在多个项目中使用该控件,那么针对当前问题的最快解决方案可能就是将用户控件合并到您的主项目中(即不要将其保留为单独的项目)。
我必须在各种项目中使用控件,因此我使用了配置文件来根据项目调整设置。
在其他以类似方式完成工作的项目中,我没有看到这个问题。 它总是使用obj \\ debug路径来构建程序集执行路径
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.