使用 Visual Studio for Mac 在解决方案资源管理器中复制客户端文件

Duplicate client-side files in solution explorer with Visual Studio for Mac

使用 dotnet cli v2.1.4 我使用 dotnet new --install Microsoft.DotNet.Web.Spa.ProjectTemplates::2.0.0 下载了 Spa 模板。然后我使用 dotnet new angular -o my-project 创建了一个 angular 项目。然后,我为 Mac 打开了 Visual Studio,并打开了 cli 为上述项目生成的 .csproj 文件。解决方案已呈现,但遗憾的是客户端文件全部重复,即使每个文件只有一个副本出现在查找器中或在目录中使用 ls。我发现了几个 threads with related issues that advised unloading the project, etc. I tried these solutions but sadly the issue remains, see attached picture. Server side files are not duplicated.

我可以通过将文件夹 ClientApp 移出项目目录,然后将其从项目中删除来解决此问题。然后我将它移回并再次将其包含在项目中,这次文件不再重复。

问题是 Angular 项目文件定义了重复的 None 项。 Visual Studio for Mac 不会隐藏这些重复项,这与 Windows 上的 Visual Studio 不同。

如果您编辑 .csproj 文件并添加 <None Remove="$(SpaRoot)**" />,那么重复文件将不会显示在解决方案 window in Visual Studio for Mac 中。

<ItemGroup>
  <!-- Don't publish the SPA source files, but do show them in the project files list -->
  <Content Remove="$(SpaRoot)**" />
  <None Remove="$(SpaRoot)**" /> <!-- This has been added -->
  <None Include="$(SpaRoot)**" Exclude="$(SpaRoot)node_modules\**" />
</ItemGroup>

在上面的项目组中,只有内容项目从 SpaRoot 目录(即 ClientApp 文件夹)中删除。

我的 .csproj 文件中有以下内容,我已将其删除:

<ItemGroup>
    <None Include="**/*" />
</ItemGroup>