当前上下文中不存在属性

时间:2012-03-12 10:25:08

标签: c# wpf

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

我确实在早期项目中访问过属性文件,而没有遇到存储值的任何问题。

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

但是在目前的项目中,我不断被Properties does not exist in the current context驱使 是否有任何设置或某些内容已更改,因为Properties未出现在Intellisense中?

14 个答案:

答案 0 :(得分:42)

当我复制并粘贴插件代码时,我遇到了同样的问题。事实证明,当我复制时,我不小心将其他项目的命名空间留在原地。通过将命名空间更改回适当的项目,我可以使用属性。

答案 1 :(得分:17)

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

  • 您可能必须使用项目设置中定义的默认命名空间前缀对Properties命名空间的任何访问;
  • 或者您可以更改默认命名空间:转到项目设置,应用程序选项卡,然后编辑项目的默认命名空间。

答案 2 :(得分:6)

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

答案 3 :(得分:4)

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

答案 4 :(得分:4)

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

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

string connectionString = Properties.Settings.Default.sqlCon;

enter image description here

转到项目 - > EventsandDelegates Properties ,如下图所示。确保创建默认设置文件。

enter image description here

只要在“应用程序设置”下创建默认设置,在我的情况下就是SQL连接变量。 Properties错误将消失。

enter image description here

答案 5 :(得分:3)

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

因此,因为设置访问修饰符设置为“内部”,并且尝试访问设置的类仍然位于旧的先前命名空间中(尽管仍在同一项目中),但该设置在该类中不可见。

答案 6 :(得分:2)

当我意外地将错误的命名空间作为项目属性中的Default命名空间时,我遇到了这个错误。

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

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

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

答案 7 :(得分:0)

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

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

    • 如果我添加引用“解决方案”项目
    • ,它会直接将我带到源代码
    • 如果我添加了对通过构建Project“A”
    • 创建的DLL的引用,则为“outline”
  • 但是当我尝试构建项目“B”时,我收到错误“当前上下文中不存在AClass”

  • 事实证明,B项目的目标是4.5,项目A的目标是4.5.2
  • 这个答案有所帮助:https://stackoverflow.com/a/15556365/1175496

答案 8 :(得分:0)

确保您可以在Settings.Designer.cs文件中查看您的设置。如果没有,请尝试删除并重新输入设置。出于某种原因,有时,该工具自动生成的代码不包括您的设置。在这种情况下,设置将不会在intellisense中提供。

答案 9 :(得分:0)

好笑,但就我而言,我在解决方案中的一个项目中定义了Properties ,并试图从另一个项目中访问
希望这可以对某人有所帮助。

答案 10 :(得分:0)

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

答案 11 :(得分:0)

在Visual Studio 2019中运行我的Web项目时遇到了这个问题。在此处尝试某些解决方案失败后,我关闭了VS2019,然后从VS2017重新打开了该项目。现在,属性名称空间已被识别。

答案 12 :(得分:0)

我可以提供的最快解决方案是双击您的resources.resx文件(如果存在),然后将窗口顶部的“访问修饰符”属性从“内部”更改为“公共”,“重建”,该编译应该会成功编译,然后再将其切换回内部并再次重建。之后应该没问题。

答案 13 :(得分:0)

我的情况:

  • 我在解决方案资源管理器中添加了一个新数据库
  • 我尝试过: string connectionString = Properties.Settings.Default.SlovickaSQLConnectionString;

我的错误:

  • 我得到:

    当前上下文中不存在属性

这是原因:

  • 我忘记在“数据源”面板中添加新的数据集。

此数据集必须连接到先前添加的数据库。

现在可以使用了。