如何使用Dotnet CLI为.NET/.NET Standard类库项目添加文件夹?
为.NET/.NET Standard类库项目添加文件夹的命令行方法及变通方案
为什么Shell创建的文件夹未显示在项目中
.NET SDK风格的类库项目默认自动包含项目目录下的所有文件和文件夹,但空文件夹不会被Visual Studio主动显示,也不会被显式写入项目文件(.csproj)。如果是旧的非SDK风格项目,文件夹必须手动添加到项目文件才会被识别。
命令行解决方案
1. 批量编辑项目文件添加文件夹
可以通过Shell命令直接向.csproj文件添加文件夹条目,让Visual Studio加载项目后自动识别这些文件夹。以Bash为例:
# 定义需要添加的文件夹列表 folders=("DTOs" "Behavior" "Features" "Filters" "Interfaces" "Mappings" "Wrappers") # 替换为你的项目文件名 project_file="YourClassLibrary.csproj" # 批量追加文件夹条目到项目文件 for folder in "${folders[@]}"; do echo " <Folder Include=\"$folder\\\" />" >> "$project_file" done
执行后,项目文件中会新增类似以下的内容(如果没有<ItemGroup>标签,需要手动将这些条目包裹进去):
<ItemGroup> <Folder Include="DTOs\" /> <Folder Include="Behavior\" /> <Folder Include="Features\" /> <!-- 其他文件夹条目 --> </ItemGroup>
2. 添加占位文件触发自动包含
SDK风格项目会自动包含带有项目相关扩展名(如.cs)的文件所在的文件夹。可以通过创建空占位文件快速让文件夹被项目识别:
# 遍历文件夹列表创建占位.cs文件 folders=("DTOs" "Behavior" "Features" "Filters" "Interfaces" "Mappings" "Wrappers") for folder in "${folders[@]}"; do mkdir -p "$folder" touch "$folder/.placeholder.cs" done
执行后运行dotnet restore或重新加载项目,这些文件夹就会出现在Visual Studio的解决方案资源管理器中。后续可以删除这些占位文件,只要文件夹内有其他有效文件,就会一直被项目保留。
手动变通方案
如果暂时不想用命令行,也可以在Visual Studio中操作:
- 点击解决方案资源管理器顶部的显示所有文件按钮(带加号的文件夹图标)
- 右键点击目标空文件夹,选择包含在项目中
内容的提问来源于stack exchange,提问作者Byron2017
相关产品推荐
相关产品推荐

