C# 单独引用系统与project.config和csproj文件中的System以及System.Xml.Linq之间的差异

C# 单独引用系统与project.config和csproj文件中的System以及System.Xml.Linq之间的差异,c#,visual-studio,nuget,csproj,C#,Visual Studio,Nuget,Csproj,在my.csproj文件中引用系统与引用系统、系统.Xml和系统.Xml.Linq之间有什么区别 一些背景故事: 使用Visual Studio 2017 Community 15.4.4,我决定升级我的项目正在使用的NuGet软件包。升级后,我注意到我的packages.config和.csproj文件现在包含“额外”条目。 例如,以前我的.csproj文件包含(除其他外)一条简单的行,其中说明: <Reference Include="System" />, , 但现在,升

在my
.csproj
文件中引用
系统
与引用
系统
系统.Xml
系统.Xml.Linq
之间有什么区别

一些背景故事: 使用Visual Studio 2017 Community 15.4.4,我决定升级我的项目正在使用的NuGet软件包。升级后,我注意到我的
packages.config
.csproj
文件现在包含“额外”条目。 例如,以前我的
.csproj
文件包含(除其他外)一条简单的行,其中说明:

<Reference Include="System" />, 
但现在,升级后,它们也包括了线路

<Reference Include="System.Xml" />
<Reference Include="System.Xml.Linq"/>

同样,我的project.config文件也会获得如下条目:

<package id="System.Xml.Linq"... > 

这以前确实存在

创建一个测试解决方案时,我编写了一个使用LINQ select语句的小函数,打印了
System.Xml.LINQ
中的枚举,然后手动删除
.csproj
文件中的
,一切似乎都正常编译

那么,为什么会自动添加这些额外的条目呢?它们有目的吗

为什么会自动添加这些额外条目?它们有目的吗

不确定为什么您的
packages.config
文件包含“额外”条目
,可能是错误添加的,或者是作为某些包的依赖项添加的(如果您想深入探究此问题的原因,您应该找出添加此包的原因)

通常,在创建.NET framework项目时,默认情况下会添加以下.NET framework引用:

<Reference Include="System" />
<Reference Include="System.Xml.Linq"/>
但是如果我们安装了这个软件包,上面的几行将替换第
行。不知道为什么它不替换那条线


因此,这就是为什么在
.csproj
文件中删除对
System.Xml.Linq
的引用没有不良影响,Visual Studio仍然从包中获取dll。

在System.Xml.Linq vs System.Xml上进行谷歌搜索,并读取差异。。你知道林克是什么吗?它的用途。。这可能有助于您快速了解一个与另一个的区别。我确实了解
System.Xml
System.Xml.Linq
之间的区别。但是,我的问题更多的是关于
.csproj
packages.config
文件:如果已经引用了
System
,为什么需要
System.Xml.Linq
,特别是当删除引用不会影响构建时。如果没有使用任何
Linq
,请删除它。。如果您没有使用任何
xml
删除它。默认情况下,如果您使用向导,项目会添加它们。我使用的是LINQ,但显然是删除了对
System.xml的引用。只要我仍然有对
System
的引用,我的
csproj
文件中的LINQ
就没有不良影响(如我在初始查询中所述)。
<Reference Include="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, processorArchitecture=MSIL">
  <HintPath>..\packages\System.Xml.Linq.3.5.21022.801\lib\net20\System.Xml.Linq.dll</HintPath>
  <Private>True</Private>
</Reference>