Свойства не существуют в текущем контексте - PullRequest
29 голосов
/ 12 марта 2012

Мне нужно сохранить несколько строк в файле настроек моего проекта. Однако я не могу получить доступ к файлу настроек для хранения строк.

Я определенно обращался к файлу свойств в более раннем проекте, не сталкиваясь с какими-либо проблемами при сохранении значений.

Properties.Settings.Default.test = ...
MyApp.Properties.Settings.Default.test = ...

Но здесь, в текущем проекте, я постоянно схожу с ума, получая Properties does not exist in the current context Есть ли какие-либо настройки или что-то, что изменилось, из-за чего Properties не отображается в Intellisense?

Ответы [ 12 ]

43 голосов
/ 21 апреля 2012

У меня была такая же проблема, когда я копировал и вставлял код для плагинов. Оказывается, я случайно оставил пространство имен другого проекта на месте, когда копировал. Изменив пространство имен обратно на соответствующий проект, я смог использовать свойства.

18 голосов
/ 30 октября 2012

во время компиляции Visual Studio генерирует класс ac #, который обеспечивает доступ к настройкам пользователя и приложения.сгенерированный класс определяется в пространстве имен по умолчанию , указанном в настройках проекта .

  • может потребоваться префикс любого доступа к пространству имен Properties с пространством имен по умолчанию, определенным в настройках проекта;
  • или вы можете изменить пространство имен по умолчанию: перейдите в настройки проекта, приложениеи измените пространство имен проекта по умолчанию.
6 голосов
/ 12 марта 2012

Убедитесь, что ваш проект имеет файл настроек, перейдя в свойства проекта и нажав на вкладку Настройки. Если файл настроек отсутствует, он сообщит вам об этом и предоставит возможность его создания.

4 голосов
/ 18 октября 2016

Сначала , попробуйте воссоздать ваш проект с нуля, если это ваша среда тестирования.На этом шаге будет воссоздано пространство имен по умолчанию.Вы можете пропустить этот шаг, если вы уверены в конфигурации своего пространства имен.

Second , если вы все еще получаете свойства, не распознаваемые, как в моем примере, где я пытаюсь получить данные из sqlCon.

string connectionString = Properties.Settings.Default.sqlCon;

enter image description here

перейти к Проект -> Свойства событий и делегатов , как показано на рисунке ниже.Обязательно создайте файл настроек по умолчанию.

enter image description here

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

enter image description here

4 голосов
/ 21 октября 2013

В моем случае я ссылался на ресурс, который имеет модификатор внутреннего / открытого доступа.Я изменил его модификатор доступа на Public, и проблема исчезла.

3 голосов
/ 08 марта 2013

У меня просто была такая же проблема.Но проблема возникла, когда я добавил новую настройку в уже определенный файл настроек (созданный давно). Каким-то образом добавление параметра в файл настроек заставило Visual Studio изменить пространство имен настройки на пространство имен проекта по умолчанию (которое изменилось с тех пор, как настройки были изменены в прошлый раз).

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

2 голосов
/ 23 марта 2015

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

Чтобы выбрать пространство имен по умолчанию, щелкните правой кнопкой мыши проект в Solution ExplorerProperties-> вкладка Application-> Defaultпространство имен и убедитесь, что оно соответствует пространству имен ваших файлов .cs:

[...]
using System.Text;
using System.Threading;

    namespace Correct.Namespace //<-- should match Default namespace field
    {
        static class Program
        {
            [...]
0 голосов
/ 16 апреля 2019

У меня была эта проблема при запуске моего веб-проекта в Visual Studio 2019. После неудачной попытки попробовать некоторые из решений здесь, я закрыл VS2019 и заново открыл проект из VS2017.Теперь пространство имен свойств распознается.

0 голосов
/ 14 марта 2019

Моя проблема с «не содержит определения для« Свойства »» была вызвана добавлением класса в пространство имен (JsonBreaker) с тем же именем, что и пространство имен (то есть JsonBreaker.JsonBreaker). Примечательно, что он ломал компиляцию, поскольку некоторые другие люди испытывают другой опыт.

namespace JsonBreaker {
  public class JsonBreaker {

     private readonly Options _opt = null;
...

Я просто изменил имя класса (и имя файла .cs) на Breaker, и мой вызов JsonBreaker.Properties.Settings.Default["InteractiveMode"] снова начал компилироваться.

namespace JsonBreaker {
   public class Breaker {

     private readonly Options _opt = null;
...
0 голосов
/ 23 февраля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...