类型或命名空间名称 'Properties' 不存在。

7

我正在尝试在我的项目中使用应用程序设置。

当我在项目中尝试以下代码时,我会收到一个错误:

TransferLogs.Properties.Settings.Default.ValleyLastRun = timeNow;

结果报错如下:

类型或命名空间名称“Properties”在命名空间“Williams.TransferLogs”中不存在(是否缺少程序集引用?)

我在我的“项目->属性->设置”页面上将设置“ValleyLastRun”定义为DateTime。我不知道为什么我不能在我的项目中引用该设置。

这是解决方案窗口:

enter image description here


4
请发布一张您项目解决方案资源管理器窗口的截图,显示引用,并显示包含 ValleyLastRun 的父级代码以及使用它的代码。我们需要确认命名空间是否正确,此项目是否确实引用了该项目,引用类型是 GAC 还是项目引用,并且您是否正确设置了它。您可能还需要清理并重新生成代码,看看是否解决了问题。另外,请问这是什么类型的项目? - George Stocker
尝试进行了一次干净的构建,但是没有成功。这是一个WinForms项目。 - John
1
这可能是一个可访问性问题。Properties是内部的,所以您的类可能无法“看到”它。 - Yuck
"Williams"来自哪里?你是否有一个名为TransferLogs的类,与项目的默认命名空间TransferLogs发生冲突?尝试使用global :: TransferLogs.Properties。 - Hans Passant
Williams是我为我的公司开发的应用程序中常用的命名空间。 "frmTransferLogs"的命名空间是Williams.TransferLogs。我尝试添加"global ::",现在它可以“看到”我的设置。但它仅给我一个只读的错误。 - John
显示剩余3条评论
11个回答

14

如果您更改了命名空间,这个问题也可能会出现。


1
还要注意,更改命名空间可能仅涉及更改命名空间的大小写或某些部分。因此,假设您在项目设置中更改了命名空间的大小写,然后更改了项目文件(如属性)的访问修饰符,它将使用新的“大小写”命名空间...但是,如果所有表单都引用以前的大写命名空间,并且您已将项目命名空间更改为 ProperCase,则它们都将无法找到“新”的项目属性或资源文件,因为它将自动生成ProperCase。 - rism
2
这是我的问题:我将Program.cs的命名空间从Foo更改为Bar.Foo,但没有在项目属性中进行更改。Settings.Designer.cs类当然是在命名空间Foo中生成的,这导致我无法从Program.cs引用它,这并不奇怪。 - Godsmith
也可能是由于resx和designer.cs文件中命名空间的不一致性引起的 - resx文件被更改但未重新生成,或者设计师文件被意外更改。 - gg89

10

问题与您的资源文件有关。默认情况下,设置为内部生成。您可以在上面的下拉框中更改设置。

有时这个类的构造函数会出现问题,因为它仍然是内部的。您可以手动更改,但每次编辑设置后它都将被重置为内部。


1
真是让我开心,不敢相信——你的答案已经超过7年了,但问题仍然存在... - ephraim

8

和用户1959018一样,我也遇到了这个错误信息,尽管原因不同于OP,我将发布我最终发现的问题和解决方案,以帮助其他人。

在项目的属性文件夹中应该有(至少)两个文件,Resources.resx和Resources.Designer.cs。在我的情况下,Resources.Designer.cs文件不知何故不再包含在项目中。可以通过编辑(或恢复旧版本的).csproj文件来修复此问题,或者使用Visual Studio的“显示所有文件”功能,然后右键单击Resources.Designer.cs并选择“包括在项目中”。

值得赞扬的是,我在这里找到了这个解决方案:http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/ebeca7a8-c7a3-4cb6-a40e-89c5fdb70c82,答案由NJLASSI提供。

编辑:

仅重新包含Resources.Designer.cs文件不是一个好的解决方案。有关更多详细信息,请参见这里


4
我面对了这个错误是因为在 SVN 更新后我的 Settings.settings 文件消失了(虽然这不是解决方案,但可能有助于其他人)。
要修复此问题,请进入项目属性,设置并单击创建设置文件的链接。之后,它会神奇地生成在项目中使用的属性。

3

我遇到了一个问题,我的项目属性没有包含正确的命名空间(->应用程序),而我在整个应用程序中都使用了它。更改默认命名空间有助于让我在类内部访问资源和设置。


1
我遇到了一个略微不同的错误(但类似)。当我查找Resources.Designer.cs时,它不存在。(我正在升级到VS2013解决方案并转移到Team Foundation VC。)
右键单击Resources.resx并使用“运行自定义工具”正确构建了Resources.Designer.cs。

0

我通过在我的资源类定义中删除 "internal" 来解决了这个问题。然而,正如slfan所说,每次编辑后它都会回到 "internal"。因此,请确保首先检查它。


0
您之所以会遇到此错误,是因为您的应用程序中没有“属性”部分。如果您在解决方案资源管理器中右键单击项目并选择创建新的设置文件,则可以通过Settings1."yourinfo"访问它。Settings1和yourinfo会根据您命名设置文件的方式而变化。

0
我曾经遇到过这个问题,当我更改类库的命名空间时。当您添加设置文件时,它会创建一个使用命名空间的类(在Settings.cs中 - "namespace YourNameSpace.Properties{....")。当我重命名我的命名空间时,它找不到.Properties命名空间,因为我拼写不同了。 新的命名空间是"namespace YourRenamedNameSpace",所以没有"YourRenamedNameSpace.Properties"。在Setting.cs中,我只需将命名空间更正为"namespace YourRenamedNameSpace.Properties{....",然后Properties.Settings就可以在命名空间内使用了。

0
由于某些原因,每当我编辑 settings.settings 时,它都会更改设置文件中的命名空间。因此,为了解决这个问题,我必须执行以下两个步骤。 右键单击 settings.cs,查看代码并更新文档顶部的命名空间,以使其与项目>属性>应用程序中的命名空间匹配。 其次,我还必须单击解决方案资源管理器中 settings.settings 旁边的小箭头以展开它,然后右键单击settings.designer.CS。在此文件中,我还必须更新命名空间。 我认为由于此解决方案最初是从 Visual Basic 转换为 C#,它以某种方式存储了旧的命名空间,并保持默认返回到它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接