2008-12-11 107 views
2

我有一个用户控件库解决方案,它具有以下配置文件

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

---UserControl Test Project 

在我的测试项目中,我能我的用户添加到工具框。当我把它拖放到我的表单中时,它就会失败。我把日志记录,发现我的用户控件读取配置文件。配置文件被标记为始终复制,并存在于obj \ debug和bin \ debug目录下。

然而,当我拖动用户控件在我的测试项目中的形式,它正试图从

Ç得到一个文件:\ Documents和Settings \ jondoe \本地设置\应用数据\微软\ 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 \调试这应该是我的装配路径的结果。什么给或有一些设置,我需要做到让它正确运行,以便它可以找到我的配置文件在正确的位置?

回答

0

在设计时你需要配置文件吗?如果没有,你可以改变你的代码来测试,如果它在设计时运行,是这样的:

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

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

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

0

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

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

+0

通常情况下,你会在我的答案下的评论(我假设你是回应我)。答案是好的,答案。 :-) – MusiGenesis 2008-12-11 17:02:46

1

请注意,我发现DesignMode属性是不可靠的,您可以在窗体上控制另一个控件(比如说)。它似乎只适用于直接放置在设计界面上的控件。

+0

+1有趣。我必须尝试一下。 – MusiGenesis 2008-12-11 17:01:24