Конфиг файл в c #

У меня есть решение UserControl Library, которое имеет следующее

UserControl --- Проект UserControl

  ---UserControl Test Project

В моем тестовом проекте я могу добавить свой пользовательский контроль в панель инструментов. Когда я перетаскиваю его и опускаю в свои формы, это не удается Я включил логирование и обнаружил, что мой usercontrol читает файл конфигурации. Файл конфигурации помечен для копирования всегда и существует в obj \ debug и в каталоге bin \ debug /.

Однако когда я перетаскиваю usercontrol в форму в моем тестовом проекте, он пытается получить файл из

C: \ Documents and Settings \ jondoe \ Локальные настройки \ Данные приложения \ 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, и это должен быть мой путь сборки. Что дает или есть некоторые настройки, которые мне нужно сделать, чтобы заставить его работать правильно, чтобы он мог найти мой файл конфигурации в нужном месте?

11.12.2008 16:14:41
4 ОТВЕТА

Вам нужен файл конфигурации во время разработки? Если нет, вы можете изменить свой код, чтобы проверить, работает ли он во время разработки, что-то вроде:

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

Ваш пользовательский контроль действительно должен прочитать файл конфигурации? Одним из основных преимуществ создания пользовательского элемента управления в виде отдельного проекта является возможность его повторного использования в нескольких других проектах. Если ваш пользовательский элемент управления должен читать файл конфигурации, это делает его повторное использование более сложным и сложным (как вы видели).

Если вам на самом деле не нужно использовать элемент управления в нескольких проектах, самое быстрое решение вашей текущей проблемы может заключаться в том, чтобы просто включить пользовательский элемент управления в ваш основной проект (т.е. не хранить его как отдельный проект).

0
11.12.2008 16:21:52

Я должен использовать свой контроль в различных проектах и, следовательно, я использовал файл конфигурации для настройки параметров в зависимости от проекта.

Я не видел эту проблему с другими проектами, где я делал работу подобным образом. он всегда использовал путь obj \ debug для построения пути выполнения сборки

0
11.12.2008 16:31:53
Обычно вы помещаете это в комментарии под моим ответом (я полагаю, что вы отвечаете мне). Ответы для, ну, ответы. :-)
MusiGenesis 11.12.2008 17:02:46

Осторожно, я обнаружил, что свойство DesignMode ненадежно, если у вас есть элемент управления в другом элементе управления (скажем). Кажется, это работает только для элементов управления, размещенных непосредственно на поверхности дизайна.

1
11.12.2008 16:40:15