Почему я не могу выбрать пользовательский тип для настройки из того же проекта / сборки, что и файл настроек? - PullRequest
29 голосов
/ 28 октября 2010

Я пытаюсь установить тип свойства настройки приложения в тип пользовательского перечисления, который я определил в своей сборке (вызовите этот проект A)

В браузере настроек я нажимаю кнопку обзора и открывается диалоговое окно «Выберите тип».

А Типы, определенные в Проекте А, мне не доступны. Тем не менее, типы доступны из других проектов, на которые ссылается А.

Мне кажется, что я почти не понимаю, что нельзя использовать типы, определенные в базовом проекте, поэтому я предполагаю, что делаю что-то не так. Я безуспешно пытался строить, чистить, перестраивать, перезапускать, так что же мне не хватает?

изменить: скриншот здесь http://tinypic.com/r/2ls8myb/7

Ответы [ 4 ]

19 голосов
/ 09 августа 2012

Я пытался сделать то же самое в VS 2010 (.net 3.5).Оказывается, вы можете сделать это с помощью дизайнера настроек.Как уже говорилось, пользовательский интерфейс полностью некорректен, но если вы вручную введете полное имя перечисления в окне просмотра, оно будет работать.Это дает преимущество в том, что вы не модифицируете сгенерированный код (* .Designer.cs), чего всегда следует избегать, потому что когда вы делаете это, нет гарантии, что ваши изменения не будут перезаписаны.

PS - ЭтоКажется, работает, только если перечисление общедоступно.

GUI настроек:

enter image description here

Затем вручную введите полное имя типа:

enter image description here

В какой-то момент я клянусь, что видел выпадающий список значений в столбце Значение, но с тех пор я его не видел, и вам просто нужно ввести соответствующее значение.

5 голосов
/ 21 декабря 2012

Я также не смог найти свой тип.Мне удалось добавить свой пользовательский тип, открыв файл Settings.settings в текстовом редакторе и добавив параметр в раздел «Настройки» следующим образом:

<Setting Name="Options" Type="MyProject.MyOptions" Scope="User">
  <Value Profile="(Default)" />
</Setting>

Дизайнер настроек жалуется, когда я его открываю, но япросто ответьте «Нет» на это диалоговое окно, и я смогу использовать пользовательские настройки в моем проекте.

3 голосов
/ 28 октября 2010

Потому что ваш собственный тип не сериализуем. Сделайте его сериализуемым, и вы можете определить его в своих настройках.

0 голосов
/ 17 января 2018

Я пытался сделать то же самое, и решение было очень простым: сначала построить.

Я добавил класс enum, определил некоторые значения, а затем попытался заменить int-значение в файле Settings.settings на мой новый enum, чтобы позже мне не пришлось сопоставлять это значение. Тип не был найден. Потому что я еще не строил.

После сборки, когда новый тип перечисления известен и может использоваться:)

...