我有一组独立的文件,这些文件根本不属于任何C项目,它们驻留在一个复杂的嵌套目录结构中。
我希望以这种格式将它们添加到我正在处理的ASP.NET Web应用程序中的其他目录中,同时保留相同的结构。因此,我将文件夹复制到了项目的目标位置,并试图"添加现有项",但结果却丢失了以前的文件夹层次结构。
通常我已经手工重新创建目录,一对一地复制目录,然后添加现有项目。在这种情况下,目录/项目太多了。
那么,如何在Visual Studio 2008中添加现有目录和文件呢?
- 事实上,这对大多数人(包括我)来说并不明显,这是对Visual Studio的一个可悲的证明。
- @皮特·阿尔文,我有很多关于Visual Studio的悲伤的遗嘱,但是现在我花了很多时间和其他一些IDE在一起,我更加感激它。
- 然而,Visual Studio并不完美,我只使用了几乎所有可用的IDE。如果是最好的。Eclipse甚至没有关闭,Xcode可能是唯一一个关闭的。
- @用户1127081:我必须其次。Visual Studio还远不是完美的,但我几乎在所有开发和目标操作系统中都使用了其他几乎所有的IDE,而且它们都非常糟糕。我还必须承认xcode显然是其他代码中最好的,但只有在xcode 3和xcode 4之间的大量批准之后,它才变得如此。日食只是一场噩梦。
将文件/文件夹从Windows资源管理器拖到解决方案资源管理器中。它将把它们全部加起来。注意:如果Visual Studio处于管理员模式,这将不起作用,因为Windows资源管理器是一个用户模式进程。
- 这对我不起作用。它只是给了我一个无效放置目标的图标。不过,下面的"显示所有文件"非常有效
- 在vs 2010中,在draggin得到文件夹之后,选择显示项目中所有文件的选项。文件以"重影"形式存在,右键单击文件夹并包含在Project中。然后将添加它们
- @约翰普塔克:这在一个项目中有效,但在解决方案中无效。
- 这个答案对VS2010无效(至少据我所知)。2012年7月10日汤姆的回答是VS2010中对我最好的解决方案。
- 使用任务管理器杀死explorer.exe,以管理员身份启动它,然后即使它以管理员身份运行,也可以拖放到Visual Studio。
- 在管理员模式下打开了一个explorer.exe的实例,它对我很有用。
- 如果使用"添加现有项"资源管理器窗口,它也可以工作。不过,您可能需要以管理模式打开Visual Studio才能使其正常工作。
- 如果文件不在项目的子文件夹中,可以按住alt(某些版本似乎带有shift)创建链接,而不是复制文件。
- 不适用于:vs 201220132015!
- 95%的人认为霍森沙杜斯特的评论不是最好的选择……
- 与2013年相比不起作用
- 2013年为我工作
- 这在我今天的Visual Studio 2013中非常有效。我已经成功地将一个完整的样式框架(如bootstrap)添加到项目子文件夹中。它甚至自动将所有内容添加到SVN版本控制中。
- 不需要拖动文件;布兰农的解决方案是最规范的。
- 将文件夹拖放到解决方案资源管理器中,然后单击"显示所有文件在vs 2015中工作"。我一直在和这个人斗争,直到我找到这个问题(和答案)。
为特定项目启用"显示所有文件"(可能需要单击"刷新"才能看到它们)**。
不属于项目的文件夹/文件在项目树中显示得稍微"轻一些"。
右键单击要添加的文件夹/文件,然后单击"包含在项目中"。它将递归地向项目添加文件夹/文件。
**这些按钮位于迷你解决方案资源管理器工具栏上。
**确保您没有处于调试模式。
- 这似乎只适用于比项目文件更深的文件,如果您将项目文件单独保存在一个文件夹中,这将不起作用。
- 这只适用于单个项目,但不适用于解决方案。
- 杜…那不是你应该放文件的地方。当然,它不会在根文件夹上面找到文件。
- 仅当您希望添加的文件夹驻留在项目文件夹中时,此操作才有效。在我的例子中,我希望它们在其他地方(在项目之间共享)。在Xcode中,将文件夹结构从任何位置拖到项目结构中都会保留文件夹结构,而不是像vs.一样将其扁平化,看起来vs.在这里缺少特性。
- 这适用于"网站",但不适用于"Web应用程序项目"。没有"显示所有文件"按钮。
- 提示-确保选择了项目,而不是解决方案-然后您可以全部显示!
- @Mattijs不能通过快捷方式添加文件吗?
- 虽然我很感激这个答案,但是很难找到"显示所有文件"图标,而且真正的制作vs的人应该让这个简单的东西自动工作!(但多亏了这里的人)
- 这是本页最规范的答案。
- @仅供参考,我正在使用Visual Studio 2015,Brannon的方法对我有效。我将现有项目中的所有文件复制到了我在vs 2015解决方案中创建的一个空项目文件夹中。然后我听从布兰农的指示,一切顺利。
- 如果处于调试模式,会发生什么?
在解决方案资源管理器中:
单击"显示所有文件"(解决方案资源管理器顶部左侧的第二个图标)。
找到要添加的文件夹。
右键单击并选择"包含在项目中"
我使用它安装HTML编辑器和第三方文件浏览器等附加组件。
- 这与4年前布兰农的回答有什么不同?
- 这不能解决解决解决方案文件夹的原始问题。它也曾被报道过。
- @toolmakersteve:不同的是,它和gant的解决方案是一样的…7年前。stackoverflow.com/questions/392473/…
- 强烈推荐此解决方案,因为当签入冲突的csproj文件并且tfs忽略冲突和覆盖时,它也会有所帮助。
- + 1。我发现这个答案比其他答案更有用,因为它(相对地)使显示所有文件都是一个图标,而不是上下文菜单上的一个条目变得清晰。
- 从左边数第三个而不是第二个
我只想指出之前提供的两个解决方案,
- 从Windows资源管理器拖放
- 显示所有文件,然后包括在项目中。
不要做问题要求的事情:
在保留目录结构的同时包含在项目中。
至少在我的情况下(C++/CLI项目Visual Studio 2013在Windows & Nbsp 7)上没有。
在Visual Studio中,当您返回正常视图(而不是显示所有文件)时,您添加的文件都将列在项目的顶层。
是的,在磁盘上,它们仍然驻留在原来的位置,但在解决方案资源管理器中,它们是松散的。
除了在解决方案资源管理器中重新创建目录结构,然后在正确的位置添加现有项之外,我找不到解决方案的方法。
- 我看到了同样的行为,VS2010,C++。
- 是的,也在Visual Studio 2010中。它甚至不会为我添加没有目录结构的文件,只添加该文件夹结构中的第一个文件,而不添加任何子文件夹。
- 同意,还是不一样。我想知道一个流行的和昂贵的软件,如vs,是如何缺少这样的功能的。我认为在解决方案资源管理器和Windows资源管理器中有两个不同但相似的结构是相当令人困惑的…
- 在这里使用2015;仍然不保留文件夹结构。震惊的。
- 利用2015年的更新3,班农和汤姆的方法取得了成功。所有嵌套文件夹按预期传入。
- stackoverflow.com/questions/42985816/…
基于这些描述,我并没有立即理解这一点,但我最终发现的是:
打开"显示所有文件"-解决方案资源管理器工具栏上有一个图标
使用Windows资源管理器(而不是解决方案资源管理器),将文件移动到希望它们驻留的目录结构中。
单击解决方案资源管理器工具栏上的"刷新"
在解决方案资源管理器树结构中,您移动的文件应该是可见的"重影"。
右键单击您的重影文件或文件夹,然后单击"包含在项目中"。文件夹的所有内容都将包括在内
下面是"显示所有文件"的图标,仅供参考。
点击上面的红色圆圈。您的文件夹将显示在解决方案资源管理器中。
右键单击文件夹->包含在项目中。
您可以更改项目XML以自动将现有子文件夹和结构添加到项目中,如NPM中的"节点模块":
这适用于旧的msbuild/Visual Studio版本
1 2 3 4
| <ItemGroup>
<Item Include="$([System.IO.Directory]::GetFiles("$(MSBuildProjectDirectory)
ode_modules","*",SearchOption.AllDirectories))"></Item>
</ItemGroup> |
对于当前的msbuild/Visual Studio版本:
只需将它放在XML的节点中:
在这种情况下,只需将$(msbuildprojectdirectory)ode_模块更改为文件夹名称。
- 是的,有时候手工编辑**proj文件会让你找到你想去的地方。
- 所以你是说有人可以做一个插件来批量做这个?因为我不是用XML手工创建一个包含数十个文件夹的文件夹结构
- 正是我要找的
您需要将目录结构放在项目目录中。然后单击解决方案资源管理器工具箱顶部的"显示所有文件"图标。之后,将显示添加的目录。然后您需要选择此目录,右键单击,然后选择"包括在项目中"。
最后,Visual Studio 2017允许用户通过单击导入整个目录。Visual Studio 2017有一个新功能"打开文件夹",允许打开整个文件夹,即使不需要将其另存为解决方案。可以使用以下方法导入源代码。
菜单文件→打开→*文件夹(ctrl+shift+o)
devenv.exe
它甚至支持构建和调试cmake项目。
将您的C++代码库带到"VisualStudio""打开文件夹"
我就是这样做的:
右键单击解决方案->添加->现有网站…
选择网站所在的文件夹。只是站点的根文件夹。
然后,所有内容都将添加到解决方案中,从文件夹到文件,以及这些文件夹中的文件。
我发现的一个很好的技巧是,如果您转到"添加现有…",您可以将文件夹从"打开"对话框拖到解决方案中。
我的Visual Studio可以在管理模式下自动打开,所以这对我来说是一个很好的解决方法,因为我不想为了让它正常工作而撤销它。
对我来说有效的方法是将文件夹拖到Visual Studio中,然后右键单击该文件夹并选择"在文件资源管理器中打开文件夹"。然后选择全部并将它们拖到Visual Studio的文件夹中。
现在市场上有一个开源的扩展,似乎可以满足OP的要求:
文件夹到解决方案文件夹
如果它不能完全满足您的需要,那么代码是可用的,因此您可以修改它以适应您的场景。
高温高压
我找到的最干净的方法是在目标文件夹中创建一个新的类库项目,并将其所有生成输出重定向到其他地方。它仍然会在该文件夹中留下一个.csproj文件,但它确实会让您在Visual Studio中看到它,并选择要在项目中包含哪些文件。
在Windows 7中,您可以执行以下操作:
右键单击项目并选择"添加->现有项"。在出现的对话框中,浏览到要添加的目录的根目录。在右上角有一个搜索框。键入*.cs或*.cpp,无论要添加的文件类型是什么。搜索完成后,选择所有文件,单击"添加"并等待一段时间…
- 这不维护目录结构-它只是将所有内容放在单击"添加"的文件夹中。
Visual Studio本机不支持这一点很令人恼火,但CMake可以生成Visual Studio项目作为解决方案。
除此之外,只需使用qt creator。然后它可以导出一个Visual Studio项目。