【发布时间】: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