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

Joe*_*ips 16 csproj .net-core

我正在使用dotnet核心csproj,我添加了一个新文件.由于约定优于配置,它最初不会被添加到csproj中.但是只要我将Build Action从None更改为Embedded资源,就会将两个条目写入csproj文件:

<None Remove="MyFile.sql" />
Run Code Online (Sandbox Code Playgroud)

<EmbeddedResource Include="MyFile.sql" />
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ich 20

sdk风格的项目有一些自动包含.

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

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

因此,这两个语句意味着"将其从None set(items)中删除并将其添加到EmbeddedResource set(items)".

  • @Martin 那么这里有什么建议呢?保留两条线?如果删除第一行会发生什么? (14认同)
  • 我在 csproj 中看到删除或不删除没有任何区别 - `&lt;None Remove="testJson\**\*.json" /&gt;`,我应该看到什么?我使用 Rider 作为我的 IDE。 (7认同)
  • 我想我们永远不会知道... (4认同)