C# 属性在当前上下文中不存在

C# 属性在当前上下文中不存在,c#,wpf,C#,Wpf,我必须在项目的设置文件中存储一些字符串。但是,我无法访问设置文件来存储字符串 我肯定在以前的项目中访问过属性文件,在存储值方面没有遇到任何问题 Properties.Settings.Default.test=… MyApp.Properties.Settings.Default.test=… 但是在当前的项目中,我不断地被当前上下文中不存在的属性逼疯 是否有任何设置或某些更改,因为属性不会在Intellisense中显示?通过转到项目属性并单击设置选项卡,确保您的项目具有设置文件。如果没有设置

我必须在项目的设置文件中存储一些字符串。但是,我无法访问设置文件来存储字符串

我肯定在以前的项目中访问过属性文件,在存储值方面没有遇到任何问题

Properties.Settings.Default.test=…

MyApp.Properties.Settings.Default.test=…

但是在当前的项目中,我不断地被当前上下文中不存在的
属性逼疯

是否有任何设置或某些更改,因为
属性
不会在Intellisense中显示?

通过转到项目属性并单击设置选项卡,确保您的项目具有设置文件。如果没有设置文件,它会告诉您,并为您提供创建设置文件的选项。

我在复制和粘贴插件代码时也遇到过同样的问题。事实证明,在复制时,我不小心将另一个项目的名称空间留在了原来的位置。通过将名称空间更改回适当的项目,我可以使用属性。

在编译时,Visual Studio生成一个c类,允许访问用户和应用程序设置。生成的类在项目设置中指定的默认命名空间中定义

  • 您可能必须使用项目设置中定义的默认名称空间作为对属性名称空间的任何访问的前缀
  • 或者您可以更改默认名称空间:转到“项目设置”、“应用程序”选项卡,然后编辑项目的默认名称空间

    • 我也有同样的问题。但是,当我将新设置添加到已定义的设置文件(很久以前创建)时,问题就出现了以某种方式将设置添加到设置文件使Visual Studio将设置的名称空间更改为项目默认名称空间(自上次修改设置后已更改)


      因此,由于设置访问修饰符被设置为Internal,而试图访问设置的类仍然位于旧的前一个命名空间中(尽管仍然在同一个项目中),因此该类中的设置变得不可见

      在我的例子中,我引用了一个具有内部/公共访问修饰符的资源。我已经将其访问修饰符更改为Public,问题就消失了。

      在我的例子中,我引用了一个项目(A)和另一个项目(B)。两者都在同一个解决方案中

      • A有一个带有公共静态方法的公共类(AClass)。(阿莫德)
      • 我想测试一下这个类的结果。AMethod(…)
      • Visual Studio在调用AClass.AMethod(…)中为AClass“着色”
      • 我可以右键单击AClass并“转到定义”

        • 如果我添加了对“解决方案”项目的引用,则直接将我带到源代码
        • 或者,如果我添加了对构建项目“A”创建的DLL的引用,则添加到DLL“大纲”
      • 但是当我试图构建项目“B”时,我得到了错误“AClass在当前上下文中不存在”

      • 原来项目B的目标是4.5,项目A的目标是4.5.2
      • 这个答案有助于:

      当我在项目属性中意外地将错误的名称空间作为默认名称空间时,出现了此错误

      要选择默认名称空间,请右键单击解决方案资源属性->应用程序选项卡->默认名称空间中的项目,并检查它是否与.cs文件的名称空间匹配:

      [...]
      using System.Text;
      using System.Threading;
      
          namespace Correct.Namespace //<-- should match Default namespace field
          {
              static class Program
              {
                  [...]
      
      […]
      使用系统文本;
      使用系统线程;
      
      名称空间正确。名称空间//确保可以在Settings.Designer.cs文件中看到您的设置。如果没有,请尝试删除并重新输入设置。由于某些原因,有时工具自动生成的代码不包括您的设置。在这种情况下,intellisense中的设置将不可用。

      首先,如果是测试环境,请尝试从头开始重新创建项目。此步骤将正确地重新创建默认命名空间。如果对命名空间配置有信心,可以跳过此步骤

      第二个,如果您仍然获得无法识别的属性,如我的示例中,我试图从sqlCon获取数据

      string connectionString = Properties.Settings.Default.sqlCon;
      

      如下图所示,转到项目->事件和代理属性。确保创建默认设置文件

      只要在应用程序设置下创建默认设置,在我的例子中,它就是SQL连接变量<代码>属性
      错误将消失


      很有趣,但在我的例子中,我在解决方案中的一个项目中定义了
      属性
      ,并试图从另一个项目进行访问。
      希望这可能会对某些人有所帮助。

      我的“不包含“属性”的定义”问题是由于向命名空间(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;
      ...
      

      我在VisualStudio2019中运行web项目时遇到了这个问题。在这里尝试一些解决方案失败后,我关闭了VS2019,并从VS2017重新打开了项目。现在,属性名称空间已被识别。

      我能提供的最快解决方案是双击resources.resx文件(如果存在),然后将窗口顶部的Access Modifier属性从“内部”更改为“公共”、“重建”,该属性应能成功编译,然后将其切换回“内部”并再次重建。在那之后应该没事了。

      我的