Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 防止VS向csproj添加显式编译标记_C#_Visual Studio_.net Core_Msbuild_.net Standard - Fatal编程技术网

C# 防止VS向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文件。但是,每当我**添加一个新的**类时(右键单击>>添加

我知道.NET Core对.csproj文件的更改,以及GLOB是如何自动检测*.cs文件的。然而,问题是我在编译时仍然遇到了某种错误

正如上面链接中所记录的,我不断得到错误:

包含重复的编译项。默认情况下,.NET SDK包含项目目录中的编译项。如果要在项目文件中显式包含这些项,可以从项目文件中删除它们,也可以将“EnableDefaultCompileItems”属性设置为“false”

我的项目正在项目目录中完美地拾取所有*.cs文件。但是,每当我**添加一个新的**类时(右键单击>>添加新项),以下内容也会添加到.csproj中:


我知道简单地删除它将防止错误发生,因为这个显式编译与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