为什么迁移到Visual Studio 2019后过滤器不再工作?

fcwjkofz  于 2023-05-18  发布在  其他
关注(0)|答案(5)|浏览(229)

从VS 2015迁移到VS 2019后,解决方案资源管理器的过滤器不再工作。为什么?
在VS 2015中,为了在解决方案资源管理器中对文件进行分类,而不创建物理文件夹,我为每个项目提供了.filters文件。筛选器在“解决方案资源管理器”中按排序顺序显示相同类型的文件(按每个文件夹:标头、源、调试...等等)。现在,它不起作用。如果我为每个项目添加->现有,并为所选项目选择相应的过滤器,我看不出有什么区别(即使在卸载/加载,关闭/打开VS。等)
我通过过滤器文件,并确保没有什么是错误的,他们和所有项目的文件实际上是列表。有人能帮忙吗?

VS 2015:

VS 2019:

e1xvtsh3

e1xvtsh31#

1.从项目目录中删除.vs文件夹。
1.将现有筛选器文件复制到项目目录。
1.打开项目。现在过滤器应该可用。

hgqdbh6s

hgqdbh6s2#

我遇到了这样的问题,并正在玩.filters文件,以了解什么是srong.所以过了一段时间我发现文件包含标签应该根据文件夹排序!例如,如果你有这样的结构:

/folder
    /sub1
    /sub2

您的文件应如下所示:

<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>
n9vozmp4

n9vozmp43#

我的.filters文件中有一个在合并过程中引入的错误。我比较了之前和之后,发现了一个标签,不再有一个结束标签。添加结束标记后,我能够打开项目,并且我的过滤器返回。
因此,如果xml结构中有错误,过滤器就会停止工作。

xdyibdwo

xdyibdwo4#

有同样的问题,尝试添加一个新的过滤器,并将一些文件移动到新的过滤器。关闭VS,同时保存“.filter”文件,并重新打开VS,它将检索旧的过滤器。现在你可以重新整理你的文件了。

2vuwiymt

2vuwiymt5#

在我的例子中,过滤器文件被保存为.filters而不是. vcxproj.filters。
可能是由于手动文件损坏出错,VS2019没有正确导入此文件了。
我的解决方案是创建一个新的过滤器“test”,并将.filters内容替换到新文件中。

相关问题