C# 防止VS向csproj添加显式编译标记
我知道.NET Core对.csproj文件的更改,以及GLOB是如何自动检测*.cs文件的。然而,问题是我在编译时仍然遇到了某种错误 正如上面链接中所记录的,我不断得到错误: 包含重复的编译项。默认情况下,.NET SDK包含项目目录中的编译项。如果要在项目文件中显式包含这些项,可以从项目文件中删除它们,也可以将“EnableDefaultCompileItems”属性设置为“false” 我的项目正在项目目录中完美地拾取所有*.cs文件。但是,每当我**添加一个新的**类时(右键单击>>添加新项),以下内容也会添加到.csproj中:C# 防止VS向csproj添加显式编译标记,c#,visual-studio,.net-core,msbuild,.net-standard,C#,Visual Studio,.net Core,Msbuild,.net Standard,我知道.NET Core对.csproj文件的更改,以及GLOB是如何自动检测*.cs文件的。然而,问题是我在编译时仍然遇到了某种错误 正如上面链接中所记录的,我不断得到错误: 包含重复的编译项。默认情况下,.NET SDK包含项目目录中的编译项。如果要在项目文件中显式包含这些项,可以从项目文件中删除它们,也可以将“EnableDefaultCompileItems”属性设置为“false” 我的项目正在项目目录中完美地拾取所有*.cs文件。但是,每当我**添加一个新的**类时(右键单击>>添加
我知道简单地删除它将防止错误发生,因为这个显式编译与GLOB的隐式include冲突。我怎样才能阻止这种事情发生
编辑
这是我的.csproj:
netstandard2.0
8.
EN
新sdkproject将自动识别文件类型,然后将其作为项目中的一项包含。因此,您不必定义任何与文件相关的项
这是新sdk项目的一个新特性
由于您已通过csproj文件下的项目定义了文件,并且希望在不删除这些项目的情况下使用它们,因此应禁用自动关联功能
在csproj
文件下添加以下内容以禁用它:
<PropertyGroup>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
</PropertyGroup>
注意:更新
是新sdk项目的一项功能,仅适用于已在全局检测到并通过新sdk项目的隐式关联找到的项目。如果文件没有隐式关联,则更新
将永远无法工作
换句话说,如果要关联的文件在项目外部(摆脱项目的隐式关联),则只能使用include
将这些文件从外部包含到项目内部,update
仅适用于作为隐式关联文件的后续MSBuild操作,这相当于对自动关联文件的补充,而不是重新导入,更可能是重写操作
Update
作用于内部项目的文件,而Include
作用于外部项目的文件
项目的文件
这与包含节点不同
我的项目在一段时间内可以很好地处理所有的.cs文件
项目目录。但是,每当我**添加一个新的*类时(对
单击>>添加新项目),以下内容也将添加到.csproj中:
这意味着您已经将EnableDefaultCompileItems
设置为false
。这样,您的csproj
将拥有这个include节点
如果您仍然存在此问题,请与我们共享您的csproj文件,以帮助我们解决您的问题。new sdkproject将自动识别文件的类型,然后将其作为项目中的一项。因此,您不必定义任何与文件相关的项
这是新sdk项目的一个新特性
由于您已通过csproj文件下的项目定义了文件,并且希望在不删除这些项目的情况下使用它们,因此应禁用自动关联功能
在csproj
文件下添加以下内容以禁用它:
<PropertyGroup>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
</PropertyGroup>
注意:更新
是新sdk项目的一项功能,仅适用于已在全局检测到并通过新sdk项目的隐式关联找到的项目。如果文件没有隐式关联,则更新
将永远无法工作
换句话说,如果要关联的文件在项目外部(摆脱项目的隐式关联),则只能使用include
将这些文件从外部包含到项目内部,update
仅适用于作为隐式关联文件的后续MSBuild操作,这相当于对自动关联文件的补充,而不是重新导入,更可能是重写操作
Update
作用于内部项目的文件,而Include
作用于外部项目的文件
项目的文件
这与包含节点不同
我的项目在一段时间内可以很好地处理所有的.cs文件
项目目录。但是,每当我**添加一个新的*类时(对
单击>>添加新项目),以下内容也将添加到.csproj中:
这意味着您已经将EnableDefaultCompileItems
设置为false
。这样,您的csproj
将拥有这个include节点
如果您仍然存在此问题,请与我们共享您的csproj文件,以帮助我们解决您的问题。我认为这是不对的。这样,解决方案资源管理器中的所有内容都将消失,不再显示。我的项目不再编译。我相信这是因为默认值使用GLOB查找所有类,这是正常函数。然而,直到最近,我才将我提到的代码添加到我的csproj中,而不是我想要的。我有一个完整和全面的解释给你。请看我的最新答案。请检查一下。对延误表示歉意;我一直很忙。我的项目中没有这些节点。我用整个csproj编辑了我的问题。请注意,我与一个全新项目有着完全相同的问题。@PerryQian MSFT我与@TimeTravelPenguin details有着相同的问题。他的视频正好详细描述了我的问题。这个问题直到第16.8节才出现。它甚至出现在最新的16.9.0中。我几乎禁用了每个VS扩展,同样的问题。我们不希望将EnableDefaultCompileItems
设置为false