C# - XmlNamespaceManager存在于' System.Xml.ReaderWriter' (...)和' System.Xml(...)'

时间:2017-04-25 23:46:43

标签: c# xml

我正在将旧的.dll重写为net.core(1.1.1),其中一个方法创建一个XmlDocument并通过XmlNamespaceManager定义命名空间:

var nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);

这会在构建时抛出以下错误:

The type 'XmlNamespaceManager' exists in both 'System.Xml.ReaderWriter, Version=4.1.0.0, (...) and 'System.Xml, Version=4.0.0.0, ...

根据我发现的大多数帖子,System.Xml.ReaderWriter是一个NuGet,我没有安装。我已尝试在XmlNamespaceManager前加System.Xml作为前缀,但这没有任何区别。

编辑:

这是csproj

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <OutputType>exe</OutputType>
  </PropertyGroup>
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
  <ApplicationIcon />
    <OutputTypeEx>exe</OutputTypeEx>
  <StartupObject />
</PropertyGroup>
<ItemGroup>
  <Reference Include="System.Xml">
    <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2\System.Xml.dll</HintPath>
  </Reference>
</ItemGroup>
<ItemGroup>
  <Folder Include="Properties\" />
</ItemGroup>
</Project>

编辑2:

问题似乎是,只要我添加对System.Xml.ReaderWriter的引用,就会添加System.Xml。为System.Xml设置别名不起作用,我无法弄清楚如何为System.Xml.ReaderWriter设置别名。

1 个答案:

答案 0 :(得分:0)

问题是因为类存在于[相同(命名空间+类型名称)]并且无法解析您要使用的那个。

你应该使用别名dll,即Dll别名。在Visual Studio中,您可以查看dll属性,然后在别名列中提供别名。然后在代码中使用

引用该dll

extern alias dllaliasname;

这应该摆脱构建错误。

看一下这个链接。

https://blogs.msdn.microsoft.com/ansonh/2006/09/27/extern-alias-walkthrough/

另外看看这个。

When must we use extern alias keyword in C#?