C# 单独引用系统与project.config和csproj文件中的System以及System.Xml.Linq之间的差异
在myC# 单独引用系统与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" />, , 但现在,升
.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>