我有一个Visual Studio解决方案。目前,它是一个空的解决方案(=没有项目),我添加了一些解决方案文件夹。
解决方案文件夹似乎只是“虚拟文件夹”,因为它们并非真正在文件系统中创建,而解决方案文件夹中的文件只是与.sln文件位于同一文件夹中。
是否有一个我忽略的设置告诉Visual Studio将解决方案文件夹视为“真正的”文件夹,即在文件系统中创建它们并在我将其移入解决方案之一时将文件移入其中那些文件夹?
编辑:谢谢。然后对VS2010提出建议:)
答案 0 :(得分:38)
无特殊设定。我认为它不受支持。
您可以在解决方案中的“项目”中创建真实文件夹,但不能在解决方案本身中创建。
答案 1 :(得分:34)
有一种解决方法,实际上可以按预期运行。
完成。现在,解决方案资源管理器将反映文件系统中的任何更改,反之亦然(包括子文件夹)。
我(小姐)将它用于规范,文档,PM和团队内共享的一些DevOps脚本。它很容易选择,包括在源代码控制中的内容,以及(如果设置正确)它与构建不冲突。
我知道该功能不适用于该用例,但除了可能具有误导性的“Project”图标之外,我还没有发现该hack的任何短缺。并且仍然存在VS提供的经典(虚拟)解决方案文件夹的用例,适合图片。你觉得怎么样?
答案 2 :(得分:15)
在Visual Studio 2017中,单击"解决方案和文件夹" Solution Explorer窗口中的图标。此按钮可从虚拟"解决方案中切换。查看"源视图"与文件系统上的文件夹和文件的布局相匹配。添加新文件夹时,将在预期位置物理创建该文件夹。
答案 3 :(得分:8)
Sara Ford贡献了一个宏来添加这样做。在Visual Studio 2010中,如果打开宏资源管理器,您将看到一个名为“GenerateSlnFolderOnDirStructure”的宏。这将自动创建解决方案文件夹并添加文件。
答案 4 :(得分:3)
不,它不受支持。如您所料,解决方案文件夹只是.sln文件中的虚拟子条目,与文件系统无关。
答案 5 :(得分:3)
选择的答案表明,可以使用实际项目代替解决方案文件夹,但并未真正说明如何使用。我想我在这里描述的可能是实现这些目标的最尴尬的方法::-P
常规项目文件的问题在于它们最终将由MSBUILD
进行编译。而且,如果您想要一个仅包含不可编译文件的项目,那么 就会成为问题。
但是不久前,Visual Studio引入了一种新的项目类型:共享项目(扩展名为.shproj)。默认情况下,不会编译该项目类型,只有在(且仅当)另一个项目引用该项目类型时才进行编译。
因此,这里的窍门之一就是使用共享项目而不是解决方案文件夹。很明显,可以添加一个其他项目从未引用过的共享项目,这意味着我们可以避免上面提到的问题。
然后,通过使用.shproj文件中的<None Include="**/*" />
子句,我们可以使其自动反映任何新文件和/或子文件夹。
因此基本上可以这样做:
例如,对于我而言,我已经创建了一个DockerDev.shproj,因此我可以将一些仅在开发机器上运行的与Docker相关的脚本分组:
<?xml version="1.0" encoding="utf-8"?>
<!-- DockerDev/DockerDev.shproj -->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<None Include="**/*" />
</ItemGroup>
</Project>
此.shproj文件将跟踪我的解决方案中此新DockerDev
文件夹的 any 子文件夹中的 any 文件。
据我所知,此解决方案的工作方式与OP所要求的非常相似:它将作为对文件夹的不可编译的引用,并且会自动反映对其所做的任何更改。
答案 6 :(得分:3)
注意:是的,你可以在root上创建一个文件夹但是它有点棘手....
通过额外的努力你可以做到如何? 让我们按照步骤 -
6.将存储库放在新的位置。
你完成了......
如果您仍然无法看到您的文件夹-----
恭喜你完成了..
如果您遇到任何问题,请写信寻求帮助..
答案 7 :(得分:3)
Folder To Solution Folder By Cecilia Wirén - CeciliaSHARP
删除将几个文件添加到解决方案文件夹的麻烦。只需使用解决方案的上下文菜单,然后在创建新解决方案文件夹的选项下方,您现在可以找到&#39;添加文件夹作为解决方案文件夹&#39;。这将创建一个与您选择的名称相同的解决方案文件夹,并将该文件夹内的项目添加到解决方案文件夹中。这不会移动磁盘上的文件。
答案 8 :(得分:2)
Visual Studio不支持此功能。我做了一个扩展,为VS2013做了类似的事情。它将解决方案文件夹映射到硬盘驱动器上的物理文件夹,但映射是一种方式(从硬盘驱动器到解决方案)。这意味着解决方案文件夹的内容将反映硬盘文件夹的内容,而不是其他方式。
除此之外,扩展可能仍然有用。 它支持将解决方案文件夹映射到物理文件夹,基于正则表达式过滤文件和目录,以及记住.sln文件中的映射。属性是非侵入性的,因此没有扩展的开发人员仍然可以打开sln而不会受到影响。
托管在visual studio gallery: https://visualstudiogallery.msdn.microsoft.com/69e19ea6-4442-4cb6-b300-044dd21f02bd
编辑:上传到bitbucket。现在开源。 MIT许可证。 https://bitbucket.org/LSS_NorthWind/physical-solution-folders
答案 9 :(得分:2)
我自己想要这个功能几次,但在一天结束时,你确实 NOT 希望能够做到这一点。将您的解决方案(文件)视为Web应用程序的根,并将解决方案文件夹视为虚拟目录(从字面上和功能上)。 Web虚拟目录的内容可以完全在不同的服务器上。 Visual Studio混乱的解决方案文件夹概念是允许您在文件夹中创建新文件。添加内容时,您应始终“添加现有”。添加现有内容时,会创建指向文件源位置的链接。
但是,您不希望解决方案文件夹的行为类似于“物理”文件夹,因为您的解决方案布局可能不一定使用与源控件布局相同的约定。解决方案文件夹允许您自定义项目的层次结构,以便您可以按照自己喜欢的方式将项目和项目组合在一起,然后决定您不喜欢它并再次更改它而无需经历移动源代码控制项目的噩梦围绕并激怒你团队的其他成员。
答案 10 :(得分:2)
然后创建一个空的解决方案 在编辑器中打开 .sln 文件 并将这些代码行放在 MinimumVisualStudioVersion
之后Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{9D8C3BB1-AEDB-4757-8559-995D12A4E6D0}"
在 vs 中打开解决方案,您应该向其中添加相同的文件夹 现在您可以看到该文件夹并向其中添加一个项目 你在 windows 中有一个真实的文件夹,在 vs 中有一个虚拟的文件夹
确保你 使用该路径创建项目
答案 11 :(得分:2)
对于 Visual Studio 2019 中的 C# 我使用这种方式 (Seems to be similar to this answer, but that didn't work at least in C# solutions)
switch views
folder view
switch views
并选择解决方案。... 只需打开一个包含多个项目的解决方案,然后尝试通过文件夹视图将项目移动到其他一些真实文件夹中。问题是 VS 不会更新解决方案文件中项目的路径
答案 12 :(得分:1)
创建“解决方案文件夹”。这将创建逻辑文件夹,但不是物理文件夹。 右键单击解决方案文件夹并打开一个新项目对话框。但在单击“确定”之前,您必须将项目位置更改为所需的物理文件夹,VS将创建它并将项目放入其中。
答案 13 :(得分:1)
您可以通过为Visual Studio项目文件选择“添加新过滤器”来添加实际文件夹。您还可以在现有文件夹下执行“添加新过滤器”。创建文件夹后,重命名该文件夹并添加源文件或头文件或适合您的项目。这是我知道的一种方式,它允许我们通过Visual Studio IDE创建真正的文件夹。
答案 14 :(得分:1)
在解决方案下创建的文件夹将是虚拟的,如上所述。也许这可能被称为解决方法,但您可以在添加新项目/项目之前或之后在磁盘上物理创建文件夹,而Robert应该是您父亲的兄弟。
ps-仔细看看也许我应该解释一下“鲍勃是你的叔叔”意味着你的罚款/分类。
答案 15 :(得分:1)
虽然这是一个老话题,但我会补充我的答案,因为我遇到了同样的问题并寻找了解决方案,但似乎每个人都 100% 确定没有办法做到这一点。于是我开始尝试VS 2019,尝试了很多设置,最终找到了出路。
您只需点击 1 个按钮 - Show All Files
,您就会看到您的 Visual Studio 解决方案的物理结构:
右键单击您的项目 → Add
→ New Folder
请注意,选项从 New Filter
更改为 New Folder
Project
include
、src
、data
、libs
等CrazyDemo
,而不是 Solution 'CreazyDemo' (1 of 1 project)
Project
→Properties
Configuration Properties
→VC++ Directories
标签Include Directories
并设置为$(ProjectDir)/Project/include;$(IncludePath)
Library Directories
并设置为$(ProjectDir)/Project/libs;$(LibraryPath)
Source Directories
并设置为$(ProjectDir)/Project/src;$(SourcePath)
Scope to This
选项。只需右键单击 Project
文件夹并按 Scope to This
Project Properties
,您需要单击任何项目文件(例如示例中的 main.cpp
),然后单击可编辑的客户区(例如您想更改代码),只有在此之后您才能看到 Project
→CrazyDemo Properties
选项。 [Visual Studio 疯了?♂️]
答案 16 :(得分:0)
我对此有一些解决方法(它不是很好,但它有效)。
这不是很好,因为您需要手动维护文件引用,但它适用于我。