2012-03-12 54 views
22

Tôi phải lưu trữ một số chuỗi trong tệp Cài đặt của dự án của tôi. Tuy nhiên, tôi không thể truy cập tệp Cài đặt để lưu trữ các chuỗi.Thuộc tính không tồn tại trong ngữ cảnh hiện tại

Tôi chắc chắn đã truy cập tệp Thuộc tính trong dự án trước đó mà không gặp phải bất kỳ sự cố nào khi lưu trữ giá trị.

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

Nhưng ở đây trong dự án hiện tại, tôi đang không ngừng được thúc đẩy điên bằng cách nhận các Properties does not exist in the current context Có bất kỳ thiết lập hoặc cái gì đó đã thay đổi vì trong đó Properties không xuất hiện trong Intellisense?

+0

Bạn có thể kiểm tra quá trình tạo mã của tệp .settings không? –

+0

@Adriano: Cài đặt.settings tệp Thuộc tính. Trình tạo mã: 'SettingsSingleFileGenerator' và tệp settings.cs đang được tạo tốt. – Cipher

Trả lời

33

Tôi đã gặp phải sự cố này khi tôi sao chép và dán mã cho trình cắm. Nó chỉ ra rằng tôi đã vô tình để lại không gian tên của dự án khác tại chỗ khi tôi sao chép. Bằng cách thay đổi không gian tên trở lại dự án thích hợp, tôi đã có thể sử dụng các thuộc tính.

+4

Một cách dễ dàng để xem tất cả các không gian tên trong dự án của bạn là mở Lớp xem trong Visual Studio. Mở một tệp trong không gian tên cũ và cấu trúc lại tên. – downeyt

4

Đảm bảo dự án của bạn tệp cài đặt bằng cách chuyển đến thuộc tính dự án và nhấp vào tab Cài đặt. Nếu không có tệp cài đặt, nó sẽ cho bạn biết và cung cấp cho bạn tùy chọn để tạo một tệp.

+0

Có, nó có tệp cài đặt và tệp settings.cs đang được tạo tốt. Kiểm tra tệp 'Settings.settings' Thuộc tính và trình tạo mã bằng' SettingsSingleFileGenerator' – Cipher

+0

Và dự án của bạn nhận ra tệp cài đặt khi bạn đi đến thuộc tính dự án -> Cài đặt? –

+0

Vâng, đúng vậy.Tôi có thể nhập các chuỗi theo cách thủ công tại đây, nhưng chúng không thể truy cập được bên trong mã MainWindow.xaml.cs của tôi – Cipher

14

lúc biên dịch, Visual Studio tạo lớp C# cho phép truy cập vào cài đặt người dùng và ứng dụng. lớp được tạo được xác định trong không gian tên mặc định mặc định được chỉ định trong cài đặt dự án .

  • bạn có thể phải thêm tiền tố vào bất kỳ không gian tên thuộc tính nào với không gian tên mặc định được xác định trong cài đặt dự án;
  • hoặc bạn có thể thay đổi không gian tên mặc định: chuyển đến cài đặt dự án, tab ứng dụng và chỉnh sửa không gian tên mặc định của dự án.
+1

Điều này hoàn toàn cố định vấn đề của tôi, tôi chỉ cần thay đổi không gian tên mặc định để phù hợp với những gì đã được trong lớp tôi đã tiêu thụ mã trong. –

1

Tôi vừa gặp vấn đề tương tự. Nhưng vấn đề xảy ra khi tôi thêm một thiết lập mới vào một tập tin cài đặt đã được xác định (tạo ra một thời gian dài trước đây). Bằng cách nào đó thêm cài đặt vào tệp cài đặt đã làm cho Visual Studio thay đổi không gian tên của thiết lập thành không gian tên mặc định của dự án (đã thay đổi kể từ khi cài đặt được sửa đổi lần cuối).

Vì vậy, bởi vì sửa đổi cài đặt truy cập được thiết lập để nội bộ, và lớp cố gắng truy cập các thiết lập vẫn nơi trong không gian tên trước cũ (vẫn còn trong cùng một dự án mặc dù), các thiết lập trở nên vô hình từ lớp đó.

4

Trong trường hợp của tôi, tôi đã tham chiếu một tài nguyên có công cụ sửa đổi truy cập nội bộ/Công khai. Tôi đã thay đổi công cụ sửa đổi quyền truy cập của mình thành Công khai và sự cố đã biến mất.

+0

Đây cũng là vấn đề của tôi, ngoài ra tôi cần khai báo biến thuộc tính bên ngoài phương thức Property trước khi accessor đã thiết lập nhận ra nó. – Doreen

0

Trong trường hợp của tôi, tôi đã tham chiếu một dự án (A) từ dự án khác (B). Cả hai trong cùng một giải pháp.

  • A có lớp công khai (AClass) với phương pháp tĩnh công khai. (AMethod)
  • Tôi muốn kiểm tra kết quả của AClass.AMethod (...)
  • Visual Studio "màu" AClass trong cuộc gọi AClass.AMethod (...)
  • và tôi có thể kích chuột phải vào Aclass và "Tới Definition",

    • mà đưa tôi hoặc trực tiếp đến nguồn nếu tôi thêm vào tham chiếu đến các dự án "Giải pháp"
    • Hoặc đến DLL "phác thảo" nếu tôi thêm tham chiếu đến DLL tạo ra bằng cách xây dựng dự án "A"
  • Nhưng khi tôi cố gắng để xây dựng dự án "B" tôi đã nhận lỗi "Aclass không tồn tại trong bối cảnh hiện nay"

  • Hóa ra dự án B được nhắm mục tiêu 4.5 và dự án A được nhắm mục tiêu 4.5.2
  • Câu trả lời này đã giúp: https://stackoverflow.com/a/15556365/1175496
2

Tôi có lỗi này khi tôi vô tình có không gian tên sai như không gian tên mặc định trong các thuộc tính dự án .

Để chọn không gian tên mặc định, kích chuột phải vào dự án trong Solution ExplorerProperties-> Ứng dụng Tab-> Default namespace và kiểm tra xem nó phù hợp với không gian tên của tập tin cs của bạn:

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

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

Hãy chắc chắn rằng bạn có thể xem cài đặt của bạn trong tệp Settings.Designer.cs. Nếu không, hãy thử xóa và nhập lại cài đặt. Vì một số lý do, đôi khi, mã được tạo tự động bởi công cụ không bao gồm cài đặt của bạn. Trong trường hợp đó, thiết lập sẽ không có sẵn trong intellisense.

+1

Vui lòng không đăng câu trả lời giống hệt nhau cho nhiều câu hỏi. Đăng một câu trả lời hay, sau đó bỏ phiếu/gắn cờ để đóng các câu hỏi khác dưới dạng bản sao. Nếu câu hỏi không trùng lặp, hãy _đặt câu trả lời của bạn cho câu hỏi_ – kleopatra

2

Đầu tiên, cố gắng tạo lại dự án của bạn từ đầu, nếu đó là môi trường thử nghiệm của bạn. Bước này sẽ tạo lại không gian tên mặc định đúng cách. Bạn có thể bỏ qua bước này nếu bạn tự tin với cấu hình không gian tên của mình.

Thứ hai, nếu bạn vẫn nhận được Thuộc tính không được nhận ra như trong ví dụ của tôi, nơi tôi đang cố lấy dữ liệu từ sqlCon.

string connectionString = Properties.Settings.Default.sqlCon; 

enter image description here

đi Dự án ->EventsandDelegates Thuộc tính như thể hiện trong hình dưới đây. Đảm bảo tạo tệp cài đặt mặc định.

enter image description here

Ngay sau khi bạn tạo cài đặt mặc định dưới Cài đặt ứng dụng của bạn, trong trường hợp của tôi nó SQL biến kết nối. Properties lỗi sẽ biến mất.

enter image description here

Các vấn đề liên quan