VisualStudio如何在解决方案里添加真实的文件夹而不是虚的解决方案文件夹

Posted kit-l

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VisualStudio如何在解决方案里添加真实的文件夹而不是虚的解决方案文件夹相关的知识,希望对你有一定的参考价值。

建议直接跳转到解决方法,因为前面都是我的废话。

问题
解决方法

问题

作为一只开发经验不足半年的新手开发者,新手.NET Core程序猿,我在学习过程中很难完全依赖官方文档,博客和Stackoverflow等网站来学习,有时候需要在网络上找一些免费的和付费的视频教程。最近我购买了肖伟宇老师的《.NET Core开发实战》课程。我还没有看视频,只粗略地浏览了一下肖老师放在GitHub上的这个视频教程的代码框架。

在看项目结构的时候我发现肖老师是使用的文件夹来划分项目结构,而不是像我和我的公司一样直接在解决方案里添加项目,添加库。我又上GitHub看了一些其他人的项目结构,发现他们一般会有一个test文件夹,里面放的是测试代码,一个src文件夹,放的是项目代码,项目代码中还会分层,三层架构,DDD,微服务之类的。

我公司的项目从来不屑于(没人知道怎样)写测试代码,一些新手教程和官方文档也没有提到这样来划分项目结构。所以我初次看到这样的操作,感觉非常不错,非常清晰,让人类更容易理解。

技术图片

然而我也想这样划分项目的时候,遇到一个问题。我直接在Visual Studio 2019中右键添加文件夹,结果只有“新建解决方案文件夹”这个选项。选择这个选项,添加的文件夹只能在VS中打开解决方案后才能看得见,在windows资源管理器中是看不见的。

技术图片

我只能选择在windows资源管理器中新建真正的文件夹,然后想办法把它添加到解决方案中,再在这个文件夹下添加库或者项目,结果发现行不通。

例如我新建一个叫Demo的控制台项目,在项目文件夹下新建一个src文件夹,新建一个test文件夹,把与sln文件在同一个目录的Demo文件夹拖到src中。现在的目录结构如图:

技术图片

技术图片

Demo在src下,sln文件与src和test文件夹在同一级目录下。

从VS2019中看,已经这样了:

技术图片

右键把这个已卸载的项目移除,然后右键解决方案,添加-已有项目,选择到Demo.csproj,添加了项目后,发现在VS中是这样的:

技术图片

这样从资源管理器里看是直观了,从VS里看就不直观了。白搞。

网上很多博客写了让我们点击VS解决方案资源管理器上方菜单栏里的显示所有文件,然后就能看到所有文件,然后再把这些文件添加到项目里。我试了,没用,bin和obj这两个文件夹倒是出来了:

技术图片

点击这个图标可以切换到文件夹视图,看起来是挺好看的,但不好用。这个时候右键解决方案sln文件,都不能选择重新生成解决方案之类的操作。

技术图片

查阅了国内外各种资料,包括Stackoverflow,也没找到答案。甚至Stackoverflow中的这个问题下,很多人都说无解。很少碰到这种棘手的问题,在dotnet开发的QQ群里问,也没人鸟我。

解决方法

我在bing这个问题的时候,在一堆无用的博客和回答中发现了这个东西:

https://marketplace.visualstudio.com/items?itemName=CeciliaWiren-CeciliaSHARP.FolderToSolutionFolder&ssr=false#overview

这是一个vs插件,它的功能如下gif图所示:

技术图片

感谢插件作者Cecilia Wirén,这个东西似乎完美满足了我的需求。赶紧下载安装试一下。

可以看到这个插件的功能是把已有的真正的文件夹添加到解决方案中。

安装完之后,把自己建的src和test删掉,只留下一个Demo.sln空解决方案。像下面这样:

技术图片

双击打开这个解决方案,是这样:

技术图片

把这个Demo也右键移除掉。右击解决方案-添加,发现有这么一项:

技术图片

点击这一项,找到我们解决方案所在的目录,右键新建一个src文件夹:

技术图片

选中这个我们刚建好的src文件夹,点击下方“确定”按钮。

技术图片

完美,现在windows资源管理器里也有src文件夹,Demo.sln这个解决方案里也有src文件夹,完美实现了我们的需求。

尝试用这种方式在VS中在src下再新建一个Console文件夹。注意,添加Console文件夹的时候,还是要右击解决方案,不能右击src,右击src是找不到这一项的。可以右击解决方案找到这个添加选项,然后在弹出的对话框中找到src文件夹,在这个文件夹下新建Console文件夹,选中,点击确定。

技术图片

新建好的文件结构在VS的解决方案资源管理器中是这样的:

技术图片

但在windows资源管理器中真正的结构是这样的:

技术图片

可以看到Console确实是在src下的。怎么解决这个问题?直接在VS中把Console拖到src里即可:

技术图片

再在这个Console文件夹下添加一个叫Demo的控制台项目,这个时候可以直接右键Console-添加-新建项目。(注意,添加项目时,下面这个位置要选到Console下,否则会出现在VS中,新项目在Console下,但在Windows资源管理器中,新项目在与src同级的目录中):

技术图片

添加完之后,在Windows资源管理器中的目录结构是这样的:

技术图片

在VS中是这样的:

技术图片

在Demo这个控制台项目中新建文件夹时,可以直接在VS中右键这个项目-添加-新建文件夹。在本地,新建的文件夹也会出现在Demo控制台的目录中。这样是没有问题的,不需要再拖动。

终于曲折地解决了问题。虽然操作还是很麻烦,但终究解决了这个问题。这个步骤操作熟练了就可以了。

我觉得这个方法依然不够聪明,也不知道那些大佬是怎么操作的,如果有知道的朋友,请在评论区分享给我,谢谢大家。


以上是关于VisualStudio如何在解决方案里添加真实的文件夹而不是虚的解决方案文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 中将自定义图标添加到解决方案资源管理器

如何在使用 Xamarin for Visual Studio 的真实 Android 设备上进行调试?

如何解决真实设备中的 CORS 问题?

VisualStudio中添加源码QT源码进行调试

c#如何将一个类库打包成两个dll

Visual Studio 怎样添加引用