<None Remove="..." />在csproj中是什么意思?

What does <None Remove="..." /> mean in csproj?

我正在使用 dotnet 核心 csproj,并且添加了一个新文件。由于约定优于配置,它最初根本没有添加到 csproj 中。但是,一旦我将其构建操作从 None 更改为嵌入式资源,就会将两个条目写入 csproj 文件:

<None Remove="MyFile.sql" />

<EmbeddedResource Include="MyFile.sql" />

第一个条目是什么意思?这对我来说似乎是多余的。

sdk-style 项目有一些自动包含。

默认情况下,sdk 在项目内容之前添加(包含)类似 <None Include="**/*">(简化)的内容。但是你不希望你的文件在"None"集中,而是在"EmbeddedResource"集中。

MSBuild 对多个项目组中的文件没有任何问题,但它应该只在一个项目组中,这样 IDE 就不会混淆(并且只显示一次文件以显示正确的构建操作).

所以这两个语句的意思是"remove it from the None set (items) and add it to the EmbeddedResource set (items)"。