我有一组独立的文件,它们根本不隶属于任何 C# 项目,它们位于复杂的嵌套目录结构中。
我想以这种格式将它们添加到我正在处理的 ASP.NET Web 应用程序中的不同目录中;同时保留相同的结构。因此,我将文件夹复制到项目的目标位置,并尝试“添加现有项目”,只是丢失了之前的文件夹层次结构。
通常我会手动重新创建目录,一对一地复制,然后添加现有项目。在这种情况下,目录/项目太多了。
那么如何在 Visual Studio 2008 中添加现有目录和文件呢?
我有一组独立的文件,它们根本不隶属于任何 C# 项目,它们位于复杂的嵌套目录结构中。
我想以这种格式将它们添加到我正在处理的 ASP.NET Web 应用程序中的不同目录中;同时保留相同的结构。因此,我将文件夹复制到项目的目标位置,并尝试“添加现有项目”,只是丢失了之前的文件夹层次结构。
通常我会手动重新创建目录,一对一地复制,然后添加现有项目。在这种情况下,目录/项目太多了。
那么如何在 Visual Studio 2008 中添加现有目录和文件呢?
将文件/文件夹从 Windows 资源管理器拖到解决方案资源管理器中。它将全部添加。请注意,如果 Visual Studio 处于管理员模式,这将不起作用,因为 Windows 资源管理器是用户模式进程。
为特定项目启用“显示所有文件”(您可能需要点击“刷新”才能看到它们)**。
不属于您的项目的文件夹/文件在项目树中 显得稍微“轻一些” 。
右键单击要添加的文件夹/文件,然后单击“包含在项目中”。它将递归地将文件夹/文件添加到项目中。
** 这些按钮位于迷你解决方案资源管理器工具栏上。
** 确保您未处于调试模式。
在解决方案资源管理器中:
我使用它来安装附加组件,例如 HTML 编辑器和第三方文件浏览器。
我只想指出之前提供的两种解决方案,
不要做问题所要求的:
在保留目录结构的同时包含在项目中。
至少在我的情况下不是(Windows 7 上的 C++/CLI 项目 Visual Studio 2013)。
在 Visual Studio 中,一旦您返回普通视图(不是Show All Files),您添加的文件都将列在项目的顶层。
是的,在磁盘上它们仍然驻留在原来的位置,但在解决方案资源管理器中它们是松散的。
除了在解决方案资源管理器中重新创建目录结构然后在正确的位置添加现有项目之外,我没有找到解决方法。
根据这些描述,我并没有立即理解这一点,但这是我最终偶然发现的:
您可以更改项目 XML 以将现有子文件夹和结构自动添加到项目中,例如 NPM 中的“node_modules”:
这适用于较旧的 MSBuild / Visual Studio 版本
<ItemGroup>
<Item Include="$([System.IO.Directory]::GetFiles("$(MSBuildProjectDirectory)\node_modules","*",SearchOption.AllDirectories))"></Item>
</ItemGroup>
对于当前的 MSBuild / Visual Studio 版本:
只需将它放在xml的节点中:
<Project>
</Project>
在这种情况下,只需将 $(MSBuildProjectDirectory)\node_modules 更改为您的文件夹名称。
您需要将目录结构放在项目目录中。然后单击解决方案资源管理器工具箱顶部的“显示所有文件”图标。之后,将显示添加的目录。然后,您需要选择此目录,右键单击并选择“包含在项目中”。
这就是我所做的:
然后,从文件夹到文件以及这些文件夹中的文件,所有内容都将添加到您的解决方案中。
我发现的一个巧妙技巧是,如果您转到“添加现有...”,您可以将文件夹从打开的对话框拖到您的解决方案中。
我让我的 Visual Studio 自动在管理模式下打开,所以这对我来说是一个很好的解决方法,因为我不想为了让它工作而撤消它。
对我有用的是将文件夹拖到 Visual Studio 中,然后右键单击该文件夹并选择“在文件资源管理器中打开文件夹”。然后全选并将它们拖到 Visual Studio 中的文件夹中。
在 Windows 7 中,您可以执行以下操作:
右键单击您的项目并选择“添加->现有项目”。在出现的对话框中,浏览到要添加的目录的根目录。在右上角,您有一个搜索框。键入*.cs
或*.cpp
,无论您要添加什么类型的文件。搜索完成后,选择所有文件,点击添加,稍等片刻...
我发现最干净的方法是在目标文件夹中创建一个新的类库项目,并将其所有构建输出重定向到其他地方。它仍然会在该文件夹中留下一个 .csproj 文件,但它确实允许您在 Visual Studio 中查看它并选择要包含在项目中的文件。
自从最初发布以来已经有一段时间了,但这里有一个替代答案。如果您只关心能够从 Visual Studio 内部查看物理文件并且不一定需要在解决方案资源管理器默认视图中查看它们,则单击切换视图按钮并选择文件夹视图和任何物理目录/目录即使它们没有出现在解决方案资源管理器默认视图中,它们也会出现在您的解决方案根文件夹下。
但是,如果您想添加一个不太大的文件夹树作为虚拟解决方案目录/目录以匹配您现有的树结构,请执行此操作,然后将现有的物理文件“添加”到虚拟目录/目录。如果物理目录存在于您的解决方案目录中,它将不会复制文件 - 它会直接链接到物理文件,但它们将作为解决方案虚拟目录的一部分出现。
令人讨厌的是,Visual Studio 本身不支持这一点,但 CMake 可以生成 Visual Studio 项目作为解决方法。
除此之外,只需使用 Qt Creator。然后它可以导出一个 Visual Studio 项目。