Подтвердить что ты не робот

Свойства не существуют в текущем контексте

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

string connectionString = Properties.Settings.Default.sqlCon;

введите описание изображения здесь

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

введите описание изображения здесь

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

введите описание изображения здесь

Ответ 6

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

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

Ответ 7

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

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

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

    namespace Correct.Namespace //<-- should match Default namespace field
    {
        static class Program
        {
            [...]

Ответ 8

В моем случае я ссылался на один проект (A) из другого (B). Оба в том же решении.

  • A имеет открытый класс (AClass) с общедоступным статическим методом. (AMethod)
  • Я хотел проверить результаты этого AClass.AMethod(...)
  • Visual Studio "цветной" AClass в вызове AClass.AMethod(...)
  • и я мог бы щелкнуть правой кнопкой мыши AClass и "Перейти к определению",

    • который взял меня либо непосредственно в источник, если я добавил ссылку на проект "Решение"
    • Или в "контур" DLL, если я добавлю ссылку на DLL, созданную при создании проекта "A"
  • Но когда я попытался построить проект "B", я получил ошибку "AClass не существует в текущем контексте"

  • Оказывается, Project B ориентировался на 4.5, а Project A ориентировался на 4.5.2.
  • Этот ответ помог: fooobar.com/questions/246641/...

Ответ 9

Убедитесь, что вы видите свой параметр в файле Settings.Designer.cs. Если нет, попробуйте удалить и повторно ввести настройку. По какой-то причине иногда код, созданный инструментом, не включает ваши настройки. В этом случае настройка не будет доступна в intellisense.

Ответ 10

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

Ответ 11

Моя проблема с "не содержит определения для" Свойства "", была вызвана добавлением класса в пространство имен (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;
...

Ответ 12

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