【问题标题】:ConfigurationManager exists in both System.Configuration.ConfigurationManager and in System.ConfigurationConfigurationManager 存在于 System.Configuration.ConfigurationManager 和 System.Configuration 中
【发布时间】:2017-06-24 02:18:42
【问题描述】:

我正在将我们的一个常用库移植到 NET Standard 2.0。

现有库在多个领域使用旧的 ConfigurationManager 来访问 app.config 文件。

I've added in the pre-release version of System.Configuration.ConfigurationManager which is resolving fine when netstandard 2.0 is selected.但是当我选择 net461 时,它会抛出一个错误:

Severity    Code    Description Project File    Line    Suppression State
Error   CS0433  The type 'ConfigurationManager' exists in both 'System.Configuration.ConfigurationManager, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' and 'System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' Synovia.Service.Common.Core(net461) C:\git\synovia.service.common\Common\EmailHelper.cs 15  Active

查看我的参考资料,我看不到我在哪里参考了两者。有没有人遇到过这个问题,你是怎么解决的?

搜索答案的所有尝试都会导致 .NET 2.0 答案等。

编辑 - 当前参考 如您所见,我没有在哪里引用 System.Configuration。只是 System.Configuration.ConfigurationManager。

  <ItemGroup>
    <PackageReference Include="ALK.Core" Version="1.1.0" />
    <PackageReference Include="Amazon.Lambda.Core" Version="1.0.0" />
    <PackageReference Include="AWSSDK.Core" Version="3.3.14.1" />
    <PackageReference Include="AWSSDK.Lambda" Version="3.3.6.2" />
    <PackageReference Include="AWSSDK.S3" Version="3.3.7" />
    <PackageReference Include="AWSSDK.SimpleNotificationService" Version="3.3.0.17" />
    <PackageReference Include="AWSSDK.SimpleWorkflow" Version="3.3.0.17" />
    <PackageReference Include="DogStatsD-CSharp-Client" Version="3.0.0" />
    <PackageReference Include="IdeaBlade.DevForce.Core" Version="7.5.0" />
    <PackageReference Include="JetBrains.Annotations" Version="10.4.0" />
    <PackageReference Include="log4net" Version="2.0.8" />
    <PackageReference Include="Log4Net.Async.Standard" Version="3.0.0" />
    <PackageReference Include="Microsoft.SqlServer.Types" Version="14.0.314.76" />
    <PackageReference Include="Moneris" Version="3.5.1" />
    <PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
    <PackageReference Include="protobuf-net" Version="2.3.0-alpha" />
    <PackageReference Include="PushSharp" Version="2.2.1" />
    <PackageReference Include="RabbitMQ.Client" Version="4.1.3" />
    <PackageReference Include="RabbitMqConsumers" Version="1.0.20" />
    <PackageReference Include="ServiceStack" Version="4.5.12" />
    <PackageReference Include="ServiceStack.Text" Version="4.5.12" />
    <PackageReference Include="StackExchange.Redis" Version="1.2.3" />
    <PackageReference Include="System.Configuration.ConfigurationManager" Version="4.4.0-preview1-25305-02" />
    <PackageReference Include="System.Data.Common" Version="4.3.0" />
    <PackageReference Include="System.Data.SqlClient" Version="4.4.0-preview1-25305-02" />
    <PackageReference Include="System.IO" Version="4.3.0" />
    <PackageReference Include="System.Linq" Version="4.3.0" />
    <PackageReference Include="System.Reflection" Version="4.3.0" />
    <PackageReference Include="System.Runtime.Serialization.Xml" Version="4.3.0" />
    <PackageReference Include="System.Security.Cryptography.Algorithms" Version="4.3.0" />
    <PackageReference Include="System.ServiceProcess.ServiceController" Version="4.3.0" />
    <PackageReference Include="System.Threading" Version="4.3.0" />
    <PackageReference Include="System.Threading.Tasks" Version="4.3.0" />
    <PackageReference Include="System.Threading.Tasks.Extensions" Version="4.4.0-preview1-25305-02" />
    <PackageReference Include="System.Threading.Tasks.Parallel" Version="4.3.0" />
    <PackageReference Include="System.Threading.Thread" Version="4.3.0" />
    <PackageReference Include="System.Threading.Timer" Version="4.3.0" />
    <PackageReference Include="System.Xml.ReaderWriter" Version="4.3.0" />
    <PackageReference Include="System.Xml.XDocument" Version="4.3.0" />
    <PackageReference Include="System.Xml.XmlDocument" Version="4.3.0" />
    <PackageReference Include="System.Xml.XmlSerializer" Version="4.3.0" />
    <PackageReference Include="Telogis.Geobase" Version="4.7.0" />
  </ItemGroup>

【问题讨论】:

  • 如果您没有得到答案,只需使用条件来绕过错误。 Rick Strahl 就在今天早上发布了这个主题。去看看他是如何在一个多目标项目中做到这一点的。
  • 如果您正在处理 .NET Standard 项目,则参考列表不应包含 System.Configuration
  • @LexLi - 我已经更新了我的参考列表。我没有在任何地方引用 System.Configuration。另外值得注意的是这个项目同时针对 net461 和 netstandard20
  • 您显示的当前列表有很多问题。 1. 不要混用 4.3.0 和 4.4.0 预览版。 2. 使用NETStandard.Library 简化列表。 3.所有的依赖都应该支持.NET Standard,并且必须一一检查,否则会污染编译。
  • @LexLi 我不确定当他们没有针对诸如 System.Threading.Tasks.Parallel 之类的 4.4 预览版本而我需要访问的东西时,您如何建议将 4.30 与 4.4 预览版混合在一起在 System.Configuration.ConfigurationManager 中。

标签: c# .net-standard


【解决方案1】:

我不知道此列表中的其他依赖项,但您在此处引用 ServiceStack 的 .NET Framework 依赖项:

<PackageReference Include="ServiceStack" Version="4.5.12" />
<PackageReference Include="ServiceStack.Text" Version="4.5.12" />

哪些确实依赖于 System.Configuration。要引用 ServiceStack 的 .NET Standard 包,您需要改为引用:

<PackageReference Include="ServiceStack.Core" Version="1.0.43" />
<PackageReference Include="ServiceStack.Text.Core" Version="1.0.43" />

如果您同时针对 .NET Framework 和 .NET Standard,则需要在各自平台下引用这两个依赖项。

【讨论】:

  • 感谢您指出这一点,我已将参考更新为仅使用新的 Core 版本,但我仍然遇到同样的问题。我想我可能只需要前往网络标准 github 页面并询问他们的建议。
  • @Wjdavis5 您还需要对每个依赖项进行相同的检查,以确保每个依赖项都引用具有 .NET 标准 DLL 的 NuGet 包
【解决方案2】:

我终于得到了这个工作。提出的所有建议都帮助我朝着正确的方向前进。主要问题是我有一个参考试图提取错误的 System.Configuration。整理完所有内容后,我将其添加到我的 csproj 中

  <ItemGroup Condition=" '$(TargetFramework)' == 'net461' ">        
    <Reference Include="System.Configuration" />
  </ItemGroup>
  <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' ">
    <PackageReference Include="System.Configuration.ConfigurationManager" Version="4.4.0-preview1-25305-02" />
  </ItemGroup>

我最初尝试过这个,但它不起作用 b/c 我输入了 'netstandard20' 而不是 'netstandard2.0' ....

哦,现在可以正常使用了,感谢大家的帮助。

【讨论】:

    猜你喜欢
    • 2012-12-06
    • 1970-01-01
    • 2012-12-01
    • 2020-10-31
    • 2010-10-09
    • 2021-05-25
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多