Visual Studio 2017没有检测到新的类项。

3
注意:新添加的类/文件是一个Xamarin.Android项目,并从另一个项目引用。
在使用“Add > New Item”命令将一个名为NewClass / NewClass.cs的新类/文件添加到特定文件夹后,编译器未检测到它,这由以下错误指示:
"The type or namespace 'NewClass' could not be found (are you missing a using directive or an assembly reference)?"
注意:我确保新类型是public的。
NewClass所在的项目成功构建。错误发生在引用项目中(不同的命名空间和程序集)。
在清理解决方案并首次构建引用项目失败后,我尝试了以下方法:
1.将NewClass的定义复制到现有文件中,并在NewClass.cs中注释原始定义-错误已修复。
2.通过注释掉复制的定义并取消注释NewClass.cs中的定义,将定义切换回原始位置-错误返回。
3.将NewClass的定义复制到另一个现有文件中,并在NewClass.cs中注释原始定义-错误已修复。
4.通过注释掉复制的定义并取消注释NewClass.cs中的定义,将定义切换回原始位置-错误未返回。
是否有手动操作可以执行,以确保编译器成功发现新添加的类?清理和重建都没有起作用,重新打开解决方案也没有用。

1
你确定在使用 NewClass 的项目中引用了定义 NewClass 的项目吗?此外,你确定 NewClass 是在正确的命名空间中定义的,并且该命名空间在你想要使用 NewClass 的文件中被引用了吗? - Aly Elhaddad
@AlyEl-Haddad,“NewClass.cs”中“NewClass”的定义现在可以正常工作(出于某种原因),所以语法和语义是正确的。 - samus
这听起来非常像是你的命名空间命名出了问题。检查一下你的命名空间是否有拼写错误。 - Sach
@Sach,我在特定文件夹上使用了“添加>新项目”操作,以查看是否会生成基于文件夹结构的命名空间,结果果然成功了(因为文件夹结构和命名空间之间的一致性只是一种约定俗成的规范)。这次我做了一个快速试验,而不是像通常那样复制粘贴现有文件。 - samus
我不知道这是否适用于您,但是当将类添加到文件夹中时,命名空间会从默认的“Namespace”更改为“Namespace.FolderName”。请尝试删除“.FolderName”。 - Magnetron
@Magnetron 命名空间是正确的。现在一切都编译正常,就像最初添加 NewClass / NewClass.cs 时一样。 - samus
1个回答

1

我相信您最初使用了不同的模板(而不是class),并进行了重命名,或者类似的操作,因此构建操作不正确。

右键单击文件,然后点击属性。在属性窗口中,确保构建操作设置为编译

作为最后的手段,复制您的代码,删除文件,添加一个同名的新文件,然后将代码粘贴回来。


我进行了属性比较作为故障排除措施,除了“文件名”和“完整路径”,它们都是相同的(“生成操作”设置为编译)。 - samus
@sαmosΛris:我明白了。你确定这个文件是项目的一部分吗? - JuanR
如果您能够发布一个类定义的代码示例,编译器出错的代码,VS解决方案资源管理器树的快照以及文件属性窗口的快照,那将非常有用。 - JuanR
如果我能在一个示例解决方案中复制这个问题,那么我会添加一些编辑。我已经在这篇文章上花费了太多时间了。 - samus

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