Visual Studio 15 - 重命名错误:在所选范围内找不到引用

6
重命名失败,但只在我的一个解决方案中。每次尝试重命名变量/函数时,它会提示更改名称,然后出现以下错误:
未在所选范围中找到引用。所选范围是整个解决方案,因此我怀疑出了问题。
我在以下帖子中找到了答案:https://social.msdn.microsoft.com/Forums/vstudio/en-US/37deb1a5-daa5-47c7-ab50-ed8e57bcf111/rename-class-does-not-work-no-references-were-found-in-the-selected-scope?forum=visualstudiogeneral 但我担心重置设置会删除我当前每个项目的设置。我只是不明白为什么重命名仅在我正在处理的4个解决方案中的一个中失败。

你能确认文件不是只读的吗?有些版本控制系统会为文件添加只读属性。 - abhilash
@ABKolan 其中一些被标记为只读。但是,取消标记后无法重命名...还有其他的想法吗? - unixsnob
不知道这是否有帮助,但我曾经遇到过与“在所选范围中找不到引用”类似的问题,后来发现当我尝试重新启动Visual Studio时,我打开了一个额外的(旧的).cpp文件副本。我删除了这个额外的文件,重新启动了Visual Studio,然后问题得到了解决。 - aquirdturtle
@Dunno: 不幸的是那不是事实。然而,我认为这与将文件导入项目有关。我复制了它们然后放在了项目里。我想这已经改变了它们的范围。我通过扩展范围以包括外部项目来解决了这个问题。不知道为什么它认为它们是外部的... - unixsnob
3个回答

5

根据你和其他人的建议扩展范围只有在Visual Studio实际识别您的引用时才有效。如果“查找所有引用”(以您喜欢的任何范围)有效,那么重命名也将起作用(如果您选择正确的范围)。

但是很多时候(我经常遇到此问题),这是VS中的一个错误,不幸的是它仍然存在于Visual Studio (Community) 2022 v17.0.5中。它可能以奇怪的方式呈现,例如您可以重命名某些内容,但仅一次。其他时候,您甚至无法重命名仅出现在两个连续行中的单个本地变量。

更多信息可以从问题中获得,并且我将引用对于VS无法跟踪引用时仅适用于我的唯一解决方案:

  1. 关闭Visual Studio的所有实例
  2. 在您的解决方案中找到隐藏的.vs文件夹。
  3. 删除整个隐藏的.vs文件夹。
  4. 重新构建解决方案

2

如我上面提到的,解决方案是扩展范围。虽然我不确定为什么需要扩展范围。这些文件位于项目内,并且是该项目版本控制范围的一部分。


2
通过从“当前解决方案”切换到“当前项目”,使其正常工作。这也没有任何意义 - 项目不是解决方案的一部分吗? - JPNotADragon
我也注意到了这一点。当设置此功能的字符串时,似乎有人混淆了“项目”和“解决方案”这个术语,因为当我在我的单元测试项目中将范围设置为“项目”时,它会包括对被测试类(该类位于此解决方案中的另一个项目中)的引用。尽管如此...这并不能解释为什么当范围设置为“解决方案”甚至是“解决方案(包括外部引用)”时,它找不到任何东西。 - Twisted Code
或许也不是。当我实际应用重构时,它只改变了当前项目的引用,而没有改变类声明或其他任何内容。 尽管如此,人们仍然要想知道为什么它在静态分析中检查的引用却有这么多麻烦找到... - Twisted Code

0

我遇到了同样的问题。但是当我将搜索范围更改为:整个解决方案(包括外部项目)时,它就可以正常工作了。


2
这已经在其他现有答案中提到了(“解决方案是扩展范围”)。 - Tomerikoo
你的回答与其他人有何不同? - Abhishek Dutt

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