2

我有一个 UserControl Library 解决方案,它具有以下内容

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

  ---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 下,那应该是我的程序集路径。什么给出了或者我需要做一些设置才能让它正确运行,以便它可以在正确的位置找到我的配置文件?

4

4 回答 4

1

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

于 2008-12-11T16:40:15.300 回答
0

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

if (this.Site != null && this.Site.DesignMode)
{
    ... design time behavior
}
else
{
    ... runtime behavior (read config file)
}
于 2008-12-11T16:20:46.807 回答
0

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

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

于 2008-12-11T16:21:52.513 回答
0

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

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

于 2008-12-11T16:31:53.087 回答