只有在非windows系统中使用dotnet build
的时候,才会报错:
The type 'Assembly' exists in both 'System.Reflection, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'System.Runtime, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
csproj
的配置如下:
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.1" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.1.0" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="1.1.0" />
排查了好久,终于发现了这个问题的原因。
其实由于dotnet core 1.1
生成的mvc
项目中的Microsoft.VisualStudio.Web.BrowserLink 1.1.0
导致的。
按照惯例,这些类库应该随着其它几个一起升级到1.1.1
,但是不知道何故依然还在1.1.0
,因此其引用的类库和其它的出现冲突,因而在build
的时候出现了错误。
而且这个错误只有在非windows环境中才会出现,看来这个类库有毒,大家慎用
我的解决办法是直接把这个类库删掉。
BTW: 没有什么问题是一个美丽的早晨不能解决的。
这个库的作用是什么?
调试的时候用的,可以和浏览器建立连接会话。