ChatGPT解决这个技术问题 Extra ChatGPT

如何在 Visual Studio 中“添加现有项”整个目录结构?

我有一组独立的文件,它们根本不隶属于任何 C# 项目,它们位于复杂的嵌套目录结构中。

我想以这种格式将它们添加到我正在处理的 ASP.NET Web 应用程序中的不同目录中;同时保留相同的结构。因此,我将文件夹复制到项目的目标位置,并尝试“添加现有项目”,只是丢失了之前的文件夹层次结构。

通常我会手动重新创建目录,一对一地复制,然后添加现有项目。在这种情况下,目录/项目太多了。

那么如何在 Visual Studio 2008 中添加现有目录和文件呢?

您可能会发现这个问题很有用,它询问如何将解决方案文件夹添加为真实文件夹:stackoverflow.com/questions/267200/…

K
Kevin Crumley

将文件/文件夹从 Windows 资源管理器拖到解决方案资源管理器中。它将全部添加。请注意,如果 Visual Studio 处于管理员模式,这将不起作用,因为 Windows 资源管理器是用户模式进程。


这对我不起作用。它只是给了我一个无效放置目标的图标。下面的显示所有文件完美无缺
在VS 2010中,拖入文件夹后,选择Show All Files in the project。文件以“幻影”形式存在,右键单击文件夹并包含在项目中。然后它们将被添加
@JohnPtacek:这在项目中有效,但在解决方案中无效。
这个答案对 VS2010 无效(至少据我所知)。汤姆在 2012 年 7 月 10 日的回答是 VS2010 中对我来说最好的解决方案
使用任务管理器杀死 explorer.exe,以管理员身份启动它,然后即使它以管理员身份运行,您也可以拖放到 Visual Studio。
P
Peter Mortensen

为特定项目启用“显示所有文件”(您可能需要点击“刷新”才能看到它们)**。

不属于您的项目的文件夹/文件在项目树中显得稍微“轻一些”。

右键单击要添加的文件夹/文件,然后单击“包含在项目中”。它将递归地将文件夹/文件添加到项目中。

** 这些按钮位于迷你解决方案资源管理器工具栏上。

** 确保您未处于调试模式。


似乎这只适用于比您的项目文件更深的文件,如果您将项目文件单独保存在一个文件夹中,这将不起作用。
这仅适用于单个项目,但不适用于解决方案。
呃......那不是你应该放置文件的地方。当然,它不会在您的根文件夹上方找到文件。
这仅在您希望添加的文件夹驻留在项目文件夹中时才有效。就我而言,我希望它们在其他地方(在项目之间共享)。在 XCode 中,将文件夹结构从任何位置拖动到项目结构中都会保留文件夹结构,而不是像 VS 那样将其展平。看起来VS在这里缺少一个功能。
提示 - 确保选择了项目,而不是解决方案 - 然后你就可以全部展示了!
P
Peter Mortensen

在解决方案资源管理器中:

单击显示所有文件(解决方案资源管理器顶部左侧的第二个图标)。找到要添加的文件夹。右键单击并选择“包含在项目中”

我使用它来安装附加组件,例如 HTML 编辑器和第三方文件浏览器。


这与 4 年前布兰农的回答有何不同?
这不能解决解决方案文件夹的原始问题。之前也有介绍过。
@ToolmakerSteve:不同之处在于它与 7 年前 Gant 的解决方案相同。 stackoverflow.com/questions/392473/…
强烈推荐此解决方案,因为它在已签入冲突的 csproj 文件并且 tfs 忽略冲突和覆盖时也有帮助
左边第三个不是第二个
P
Peter Mortensen

我只想指出之前提供的两种解决方案,

从 Windows 资源管理器拖放

显示所有文件,然后包含在项目中。

不要做问题所要求的:

在保留目录结构的同时包含在项目中。

至少在我的情况下不是(Windows 7 上的 C++/CLI 项目 Visual Studio 2013)。

在 Visual Studio 中,一旦您返回普通视图(不是显示所有文件),您添加的文件都将列在项目的顶层。

是的,在磁盘上它们仍然驻留在原来的位置,但在解决方案资源管理器中它们是松散的。

除了在解决方案资源管理器中重新创建目录结构然后在正确的位置添加现有项目之外,我没有找到解决方法。


我看到相同的行为,VS2010,C++。
没错,在 Visual Studio 2010 中也是如此。它甚至不会为我添加没有目录结构的文件,只是该文件夹结构中的第一个文件,而不是任何子文件夹。
同意,还是不一样。我想知道像 VS 这样流行且昂贵的软件怎么会缺少这样的功能。我认为在解决方案资源管理器和 Windows 资源管理器中有两个不同但相似的结构相当令人困惑......
在这里使用 2015;仍然不保留文件夹结构。目瞪口呆。
使用 2015 Update 3,刚刚通过 Bannon 和 Tom 的方法取得了成功。所有嵌套文件夹都按预期进入。
a
animuson

根据这些描述,我并没有立即理解这一点,但这是我最终偶然发现的:

打开“显示所有文件” - 解决方案资源管理器工具栏上有一个图标 使用 Windows 资源管理器(不是解决方案资源管理器),将文件移动到您希望它们驻留的目录结构中 单击解决方案资源管理器工具栏上的“刷新”您移动的文件应该在您放置它们的解决方案资源管理器树结构中可见“幻影”右键单击您的幻影文件或文件夹,然后单击“包含在项目中”。将包含文件夹的所有内容


这是一个解决方案文件夹,而不是一个项目。
更新:VS2019 中没有“refres”按钮
P
Peter Mortensen

下面是“显示所有文件”的图标,仅供参考。

https://i.stack.imgur.com/iELY6.jpg


M
Manoj Kalluri

https://i.stack.imgur.com/s7cdg.png

点击上方红圈。您的文件夹将出现在解决方案资源管理器中。

右键单击您的文件夹-> 包含在项目中。


P
Peter Mortensen

您可以更改项目 XML 以将现有子文件夹和结构自动添加到项目中,例如 NPM 中的“node_modules”:

这适用于较旧的 MSBuild / Visual Studio 版本

<ItemGroup>
   <Item Include="$([System.IO.Directory]::GetFiles(&quot;$(MSBuildProjectDirectory)\node_modules&quot;,&quot;*&quot;,SearchOption.AllDirectories))"></Item>
</ItemGroup>

对于当前的 MSBuild / Visual Studio 版本:

只需将它放在xml的节点中:

<Project>
</Project>

在这种情况下,只需将 $(MSBuildProjectDirectory)\node_modules 更改为您的文件夹名称。


是的,有时手动编辑 *.*proj 文件会让你到达你想去的地方。
所以你是说有人可以制作一个插件来批量执行此操作?因为我没有在 xml 中手动重新创建包含数十个文件夹的文件夹结构
正是我想要的
n
nader

您需要将目录结构放在项目目录中。然后单击解决方案资源管理器工具箱顶部的“显示所有文件”图标。之后,将显示添加的目录。然后,您需要选择此目录,右键单击并选择“包含在项目中”。


这几乎就是公认的答案所暗示的,也是它下面的评论之一。
W
Willy David Jr

这就是我所做的:

右键单击解决方案 -> 添加 -> 现有网站...选择您的网站所在的文件夹。只是站点的根文件夹。

然后,从文件夹到文件以及这些文件夹中的文件,所有内容都将添加到您的解决方案中。


P
Peter Mortensen

最后,Visual Studio 2017 允许用户通过单击导入整个目录。 Visual Studio 2017 有一个新功能“打开文件夹”,它允许打开整个文件夹,即使不需要将其保存为解决方案。可以使用以下方法导入源代码。

菜单文件 → 打开 → *文件夹 (Ctrl + Shift + O) devenv.exe <源文件夹>

它甚至支持构建和调试 CMake 项目。

Bring your C++ codebase to Visual Studio with “Open Folder”


Y
Yann Duran

现在市场中有一个开源扩展,似乎可以满足 OP 的要求:

Folder To Solution Folder

https://i.stack.imgur.com/vieVa.gif

如果它不完全符合您的要求,则代码可用,因此您可以对其进行修改以适合您的场景。

高温高压


扩展在 VS 15.9.13 2017 版本上对我不起作用
P
Peter Mortensen

我发现的一个巧妙技巧是,如果您转到“添加现有...”,您可以将文件夹从打开的对话框拖到您的解决方案中。

我让我的 Visual Studio 自动在管理模式下打开,所以这对我来说是一个很好的解决方法,因为我不想为了让它工作而撤消它。


不保留 subdir 结构,但有点工作。另一个好处是管理员模式没有障碍......
N
Nick

对我有用的是将文件夹拖到 Visual Studio 中,然后右键单击该文件夹并选择“在文件资源管理器中打开文件夹”。然后全选并将它们拖到 Visual Studio 中的文件夹中。


G
Gijs

在 Windows 7 中,您可以执行以下操作:

右键单击您的项目并选择“添加->现有项目”。在出现的对话框中,浏览到要添加的目录的根目录。在右上角,您有一个搜索框。输入 *.cs*.cpp,无论您要添加什么类型的文件。搜索完成后,选择所有文件,点击添加,稍等片刻...


这不会维护目录结构 - 它只是将所有内容放在您单击添加的文件夹中。
J
Jason Kester

我发现最干净的方法是在目标文件夹中创建一个新的类库项目,并将其所有构建输出重定向到其他地方。它仍然会在该文件夹中留下一个 .csproj 文件,但它确实允许您在 Visual Studio 中查看它并选择要包含在项目中的文件。


C
C Post

自从最初发布以来已经有一段时间了,但这里有一个替代答案。如果您只关心能够从 Visual Studio 内部查看物理文件并且不一定需要在解决方案资源管理器默认视图中查看它们,则单击切换视图按钮并选择文件夹视图和任何物理目录/目录即使它们没有出现在解决方案资源管理器默认视图中,它们也会出现在您的解决方案根文件夹下。

https://i.stack.imgur.com/B3Fy6.png

但是,如果您想添加一个不太大的文件夹树作为虚拟解决方案目录/目录以匹配您现有的树结构,请执行此操作,然后将现有的物理文件“添加”到虚拟目录/目录。如果物理目录存在于您的解决方案目录中,它将不会复制文件 - 它会直接链接到物理文件,但它们将作为解决方案虚拟目录的一部分出现。


在将其粘贴到更多位置之前,请花时间阅读 Is it acceptable to add a duplicate answer to several questions?
P
Peter Mortensen

令人讨厌的是,Visual Studio 本身不支持这一点,但 CMake 可以生成 Visual Studio 项目作为解决方法。

除此之外,只需使用 Qt Creator。然后它可以导出一个 Visual Studio 项目。