为什么在迁移到Visual Studio 2019后,过滤器不再起作用?

4

从VS 2015迁移到VS 2019后,解决方案资源管理器的筛选器不再起作用。为什么?

在VS 2015中,为了将文件分类到解决方案资源管理器中而不创建物理文件夹,我为每个项目创建了一个.filters文件。筛选器按照每个文件夹的方式在解决方案资源管理器中以排序顺序显示相同类型的文件(标题、源代码、调试等)。现在它不起作用了。如果我为每个项目选择Add->Existing,并选择所选项目的相应筛选器,我看不到任何区别(即使卸载/加载、关闭/打开VS等)

我检查了筛选器文件,并确保没有问题,并且所有项目文件都实际上是列出来的。有人能帮忙吗?

VS 2015:

enter image description here

VS 2019:

enter image description here

6个回答

7
  1. 从项目目录中删除 .vs 文件夹。
  2. 将现有的筛选器文件复制到项目目录中。
  3. 打开该项目。此时应该可以使用这些筛选器。

非常感谢! - Alex
请将其标记为已接受的答案(只需确保删除项目中的.vs而不是解决方案)。谢谢。 - CJ_Notned

2
我遇到了这样的问题,正在研究.filters文件以了解问题所在。经过一段时间的尝试,我发现文件包含标签应根据文件夹排序!例如,如果您有这样的结构:
/folder
    /sub1
    /sub2

Your file should look like:

<ClInclude Include="folder1\file1.h">
  <Filter>folder</Filter>
</ClInclude>
<ClInclude Include="folder1\sub1\file2.h">
  <Filter>folder\sub1</Filter>
</ClInclude>
<ClInclude Include="folder1\sub2\file3.h">
  <Filter>folder\sub2</Filter>
</ClInclude>

在我的情况下,排序不正确,在Visual Studio IDE中,我得到了项目文件的平面列表。我的情况是这样的:
<ClInclude Include="folder1\sub1\file2.h">
  <Filter>folder\sub1</Filter>
</ClInclude>
<ClInclude Include="folder1\sub2\file3.h">
  <Filter>folder\sub2</Filter>
</ClInclude>
<!-- This subfolder was not at the place -->
<ClInclude Include="folder1\file1.h">
  <Filter>folder</Filter>
</ClInclude>

1

遇到相同的问题,尝试添加一个新的筛选器并将一些文件移动到该新筛选器中。在保存“.filter”文件时关闭VS,并重新打开VS,它会恢复旧的筛选器。现在您可以对文件进行排序。


1
我的 .filters 文件在合并时出现错误。我比较了之前和之后的文件,发现一个标签没有闭合。添加了闭合标签后,我成功打开了项目,并且过滤器也恢复正常。
因此,如果 XML 结构存在错误,则过滤器将停止工作。

0
在我的情况下,筛选器文件保存为 .filters 而不是 .vcxproj.filters。
可能由于手动操作文件时出了问题,导致 VS2019 无法正确导入此文件。
我的解决方案是创建一个新的筛选器“test”,并将 .filters 内容替换为新文件中的内容。

0

遇到了同样的问题。 解决方法是打开 .vcxproj.user 文件, 删除 true, 重新加载 Visual Studio - 问题解决。


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