为什么 Visual Studio 隐藏了无代码 C# 项目中的某些文件夹?
Why Visual Studio hides certain folders in a codeless C# project?
Visual Studio版本
Microsoft Visual Studio 企业版 2022(64 位)
版本 17.0.4
描述
我这里有一个非常简单的自定义SDK风格项目(https://github.com/MarkKharitonov/HiddenFolders):
C:.
│ .gitignore
│ Directory.Build.props
│ Directory.Build.targets
│ LegacyFrontEnd.sln
│
└───Approvals
│ Approvals.csproj
│
├───Content
│ approvals_icons.png
│
├───Scripts
│ Approvals.ts
│
└───StaticViews
Approvals.html
我的问题是 VS 解决方案资源管理器不显示 Scripts
文件夹:
构建代码很简单,但它取代了 SDK 的标准构建目标:
Directory.Build.props
<Project>
<PropertyGroup>
<EnableDefaultItems>False</EnableDefaultItems>
<GenerateAssemblyInfo>False</GenerateAssemblyInfo>
</PropertyGroup>
<ItemGroup>
<TypeScriptCompile Include="Scripts\**\*.ts" />
<Stylus Include="Stylus\**\*.styl" />
<Content Include="Content\**\*.*" />
<Content Include="StaticViews\**\*.*" />
</ItemGroup>
</Project>
Directory.Build.targets
<Project>
<Target Name="Build" />
<Target Name="Clean" />
<Target Name="Rebuild" DependsOnTargets="Clean;Build" />
<Target Name="CompileTypeScript" BeforeTargets="Build">
<MakeDir Directories="$(MSBuildProjectDirectory)\_jsCompiled"/>
<Touch Files="$(MSBuildProjectDirectory)\_jsCompiled\Approvals.js" AlwaysCreate="true" />
</Target>
</Project>
.\Approvals\Approvals.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net472</TargetFramework>
<OutputPath>bin</OutputPath>
</PropertyGroup>
</Project>
很简单。
为什么 VS 解决方案资源管理器不显示 Scripts 文件夹?
P.S.
也张贴在这里 - https://github.com/dotnet/project-system/issues/7941
项目在解决方案资源管理器中的可见性由项目的可见元数据控制。
你可以
<ItemDefinitionGroup>
<Foo>
<Visible>false</Visible>
</Foo>
</ItemDefinitionGroup>
从解决方案资源管理器中隐藏所有 Foo 项,您可以包含元数据以控制可见性:
<Stylus Include="Stylus\**\*.styl">
<Visible>false</Visible>
</Stylus>
或使用更新更新现有项目以添加、设置或删除元数据:
<Stylus Update="Stylus\**\*.styl">
<Visible>false</Visible>
</Stylus>
MSBuild 项目产生许多不同类型的项目。它不会在解决方案资源管理器中显示所有这些项目。它只显示某些类型。
TypeScriptCompile
项目未显示在树中。如果你想在树中看到它们,你有两个选择。
将它们别名为显示的不同类型,例如 None
。您必须在添加所有源项目后执行此操作:
<ItemGroup>
<None Include="@(TypeScriptCompile)" />
</ItemGroup>
告诉 VS TypeScriptCompile
项将被视为项目项:
<ItemGroup>
<AvailableItemName Include="TypeScriptCompile" />
</ItemGroup>
Visual Studio版本
Microsoft Visual Studio 企业版 2022(64 位) 版本 17.0.4
描述
我这里有一个非常简单的自定义SDK风格项目(https://github.com/MarkKharitonov/HiddenFolders):
C:.
│ .gitignore
│ Directory.Build.props
│ Directory.Build.targets
│ LegacyFrontEnd.sln
│
└───Approvals
│ Approvals.csproj
│
├───Content
│ approvals_icons.png
│
├───Scripts
│ Approvals.ts
│
└───StaticViews
Approvals.html
我的问题是 VS 解决方案资源管理器不显示 Scripts
文件夹:
构建代码很简单,但它取代了 SDK 的标准构建目标:
Directory.Build.props
<Project>
<PropertyGroup>
<EnableDefaultItems>False</EnableDefaultItems>
<GenerateAssemblyInfo>False</GenerateAssemblyInfo>
</PropertyGroup>
<ItemGroup>
<TypeScriptCompile Include="Scripts\**\*.ts" />
<Stylus Include="Stylus\**\*.styl" />
<Content Include="Content\**\*.*" />
<Content Include="StaticViews\**\*.*" />
</ItemGroup>
</Project>
Directory.Build.targets
<Project>
<Target Name="Build" />
<Target Name="Clean" />
<Target Name="Rebuild" DependsOnTargets="Clean;Build" />
<Target Name="CompileTypeScript" BeforeTargets="Build">
<MakeDir Directories="$(MSBuildProjectDirectory)\_jsCompiled"/>
<Touch Files="$(MSBuildProjectDirectory)\_jsCompiled\Approvals.js" AlwaysCreate="true" />
</Target>
</Project>
.\Approvals\Approvals.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net472</TargetFramework>
<OutputPath>bin</OutputPath>
</PropertyGroup>
</Project>
很简单。
为什么 VS 解决方案资源管理器不显示 Scripts 文件夹?
P.S.
也张贴在这里 - https://github.com/dotnet/project-system/issues/7941
项目在解决方案资源管理器中的可见性由项目的可见元数据控制。
你可以
<ItemDefinitionGroup>
<Foo>
<Visible>false</Visible>
</Foo>
</ItemDefinitionGroup>
从解决方案资源管理器中隐藏所有 Foo 项,您可以包含元数据以控制可见性:
<Stylus Include="Stylus\**\*.styl">
<Visible>false</Visible>
</Stylus>
或使用更新更新现有项目以添加、设置或删除元数据:
<Stylus Update="Stylus\**\*.styl">
<Visible>false</Visible>
</Stylus>
MSBuild 项目产生许多不同类型的项目。它不会在解决方案资源管理器中显示所有这些项目。它只显示某些类型。
TypeScriptCompile
项目未显示在树中。如果你想在树中看到它们,你有两个选择。
将它们别名为显示的不同类型,例如
None
。您必须在添加所有源项目后执行此操作:<ItemGroup> <None Include="@(TypeScriptCompile)" /> </ItemGroup>
告诉 VS
TypeScriptCompile
项将被视为项目项:<ItemGroup> <AvailableItemName Include="TypeScriptCompile" /> </ItemGroup>