我正在使用C# Framework4.6.2和log4net 2.0.8开发一个.NET库项目。
当我试图编译该项目时,我会得到以下错误:
error CS0433:'c:\Windows\assembly\GAC_32\log4net\1.2.10.0__692fbea5521e1304\log4net.dll‘和'd:\Desarrollo\packages\log4net.2.0.8\lib\net45-full\log4net.dll’中都存在“log4net.ILog”类型
在GAC中似乎还有另一个版本的log4net。
为什么要使用GAC版本来编译呢?我有另一个使用log4net的项目,只有在这个项目中我才会得到这个错误。
log4net的引用是D:\Desarrollo\packages\log4net.2.0.8\lib\net45-full\log4net.dll。它被设置为本地副本。
我已经安装了软件包,并再次添加了同样的错误。
详细的错误是:
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(1964,5): warning MSB3243: No way to resolve conflict between "log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a" and "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304". Choosing "log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a" arbitrarily.
1>D:\MyProject\Loggers\ActionLogHelper.cs(28,20,28,24): error CS0433: The type 'ILog' exists in both 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' and 'log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a'
1>D:\MyProject\Loggers\ActionLogHelper.cs(30,26,30,30): error CS0433: The type 'ILog' exists in both 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' and 'log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a'
1>D:\MyProject\Loggers\ExceptionLogHelper.cs(22,20,22,24): error CS0433: The type 'ILog' exists in both 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' and 'log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a'
1>D:\MyProject\Loggers\ExceptionLogHelper.cs(24,29,24,33): error CS0433: The type 'ILog' exists in both 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' and 'log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a'
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========发布于 2017-05-12 08:56:02
问题是,在项目文件中有两个引用相同的dll。我用Notepad++打开了项目文件,并在下面找到了以下内容:
<ItemGroup>
<Reference Include="log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\log4net.2.0.8\lib\net45-full\log4net.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Ninject, Version=3.2.0.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Ninject.3.2.2.0\lib\net45-full\Ninject.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Net.Http" />
<Reference Include="log4net">
<HintPath>..\..\..\packages\log4net.2.0.3\lib\net40-full\log4net.dll</HintPath>
</Reference>我删除了最后一个,现在它编译了。
https://stackoverflow.com/questions/43867239
复制相似问题