以下是解决方案资源管理器中显示的Visual Studio中项目的过滤器: -
ProjectName1
== References, External Dependencies, Header Files, Resource Files
== Source Files
==== myFilter01
------ K.h (system folder = `D:\ProjectName1\K.h`)
------ K.cpp (system folder = `D:\ProjectName1\K.cpp`)
==== myFilter02
====== subFilter2_1
--------- B.h (system folder = `D:\ProjectName1\B.h`)
--------- B.cpp (system folder = `D:\ProjectName1\B.cpp`)
========= subFilter2_2
----------- C.h (system folder = `D:\ProjectName1\C.h`)
----------- C.cpp (system folder = `D:\ProjectName1\C.cpp`)
ProjectName2
== ... (some existing filter/files)
(在实际情况中,所有过滤器都包含大量子过滤器和文件。)
如何:
.h
内的所有.cpp
和B
个文件(C
和myFilter02
)移至ProjectName2
的文件夹(例如D:\ProjectName2
)C
必须仍然在subFilter2_1\subFilter2_2
)O(1)
以下是预期结果: -
ProjectName1
== References, External Dependencies, Header Files, Resource Files
== Source Files
==== myFilter01
------ K.h (system folder = `D:\ProjectName1\K.h` )
------ K.cpp (system folder = `D:\ProjectName1\K.cpp` )
==== myFilter02
ProjectName2
== ... (some existing filter/files)
== subFilter2_1
----- B.h (system folder = `D:\ProjectName2\B.h` )
----- B.cpp (system folder = `D:\ProjectName2\B.cpp` )
===== subFilter2_2
------- C.h (system folder = `D:\ProjectName2\C.h` )
------- C.cpp (system folder = `D:\ProjectName2\C.cpp` )
可以为每个子子过滤器手动完成+添加现有文件,但这非常繁琐。
我试图右键单击过滤器/文件,但没有找到这样的功能 我目前不使用任何Microsoft的源代码控制/存储库(以防它是相关的)。
注意:正常阻力&放在过滤器上不要将文件移动到另一个项目的文件夹。
它只是使移动的文件成为原始位置(D:\ProjectName1\
)的快捷方式。
热键?插入?脚本?
我真的必须创建一个程序来完成这个特定的事情吗?
在询问几天后,我使用RapidXML ~500-1000行用c ++对其进行了编码。
我必须编辑两个项目的.vcxproj.filters
和.vcxproj
,并移动一些系统文件
不过,我仍然没有找到关于这个问题的答案。
(收到Hans Passant和Prab的建议后,谢谢!)
我想使用过滤器而不是文件夹,原因如下: -
#include "../myFilter01/K.h"
或添加其他包含目录。我可以简单#include "K.h"
。 =◆██myFilter01██◆=
用于过滤器,但不包含文件夹。这是我的口味。我不想
.cpp/.h
文件外,我还会遇到上述缺点。总之,使用文件夹代替过滤器会让我遇到更多新问题。
答案 0 :(得分:0)
这不是单击解决方案,但可以比手动更快地完成。
找出需要复制的文件。为此,请将过滤器从一个项目移动到另一个项目。然后切换到第一个项目的目录视图(显示所有文件)并复制但不过去带有小红色指示符的文件(项目中未包含的文件)。现在回到两个项目的过滤器视图,并将过滤器移回第一个项目。之后,将两个项目切换到目录视图,然后传递第二个项目。
现在我们需要创建正确的过滤器。将文件从源和头过滤器移动到第二个项目中的另一个过滤器。卸载这两个项目。打开第一个和第二个项目.filters文件从第一个文件复制到第二个所有过滤器标签,“源文件”,“头文件”,“资源文件”除外。从第二个文件接下来删除所有以源或标头开头的标签。现在从第二个ItemGroup复制整个内容并将其传递给第二个文件第二个ItemGroup。保存第二个文件。
此时你应该拥有第一个项目过滤树的副本而没有不必要的文件现在只需移动你想要纠正的地方。
在第一个项目中创建单个树是有帮助的。