Свойства не существуют в текущем контексте
Мне нужно сохранить некоторые строки в файле настроек моего проекта. Однако я не могу получить доступ к файлу настроек для хранения строк.
У меня определенно был доступ к файлу свойств в более раннем проекте, без каких-либо проблем для хранения значений.
Properties.Settings.Default.test = ...
MyApp.Properties.Settings.Default.test = ...
Но здесь, в текущем проекте, меня постоянно злишь, получив Properties does not exist in the current context
Есть ли какие-либо настройки или что-то изменилось, из-за чего Properties
не отображается в Intellisense?
Ответы
Ответ 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 распознается.