我有一个UserControl Library解决方案,其中包含以下内容
用户控件 --- UserControl项目
---UserControl Test Project
在我的测试项目中,我可以将我的usercontrol添加到工具箱中。当我拖动它并将其放入我的表单时,它会失败。我输入了日志记录,发现我的usercontrol读取了一个配置文件。配置文件被标记为始终复制并存在于obj \ debug和bin \ debug目录/.
中然而,当我将usercontrol拖到我的测试项目中的表单时,它正试图从
获取文件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下,那应该是我的汇编路径。是什么给出或者是否有一些设置我需要做才能让它正确运行,以便它可以在正确的位置找到我的配置文件?
答案 0 :(得分:1)
注意,我发现DesignMode属性不可靠,你可以控制窗体上的另一个控件(比方说)。它似乎只适用于直接放在设计表面上的控件。
答案 1 :(得分:0)
您是否在设计时需要配置文件?如果没有,您可以更改代码以测试它是否在设计时运行,如:
if (this.Site != null && this.Site.DesignMode)
{
... design time behavior
}
else
{
... runtime behavior (read config file)
}
答案 2 :(得分:0)
您的用户控件是否真的需要读取配置文件?使用户控制单独项目的主要优点之一是您可以在多个其他项目中重用它。如果您的用户控件必须读取配置文件,那么重用它会更加困难和复杂(正如您所见)。
如果您实际上不需要在多个项目中使用该控件,那么当前问题的最快解决方案可能是将用户控件合并到您的主项目中(即不要将其作为单独的项目保留)。
答案 3 :(得分:0)
我必须在各种项目中使用我的控件,因此我使用配置文件根据项目调整设置。
我没有在其他以类似方式完成工作的项目中看到这个问题。它总是使用obj \ debug路径来构建程序集执行路径