我有一个使用.NET Standard 2.0的跨平台(iOS和Android)Xamarin解决方案.该解决方案由Visual Studio 2017构建(我已尝试过当前版本和预览版本).Forms和Android项目构建良好.但是,iOS无法构建,出现以下错误:
1> CSC:错误CS1703:已导入具有等效标识的多个程序集:'C:\ Users \newuser.nuget\packages\system.reflection.emit\4.3.0\ref \netstandard1.1\System.Reflection.Emit. dll'和'C:\ Program Files(x86)\ Microsoft Visual Studio\Preview\Enterprise\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\Xamarin.iOS\v1.0\Facades\System.Reflection.Emit.dll'.删除其中一个重复的引用.
我已经尝试了很多解决方法,如下所述:
不幸的是,这些建议都不起作用 我还尝试直接将System.Reflection.Emit nuget包添加到Forms和/或iOS项目中.这也不起作用.请注意,最初,System.Reflection.Emit包未被解决方案中的任何内容直接引用.它由以下显式引用的nuget包引入:
最后,我在包控制台中尝试了update-package -reinstall命令,以重新安装iOS项目的所有包.这也不起作用.
- 更新
为了清楚说明,Xamarin Forms或Xamarin iOS项目都不直接引用System.Reflection.Emit.该软件包作为其他nuget软件包的依赖项被引入,只是从安装到Xamarin Forms项目中的软件包中获取.我已经确认Nuget引用的所有依赖项都使用相同的版本.看这些截图:
在我看来,问题(如错误所示)是由Visual Studio安装的旧版本的System.Reflection.Emit.但是,我找不到忽略它的方法,而是使用System.Reflection.Emit的版本.正如我上面所说,我曾尝试在Xamarin.iOS项目中使用project.json文件,并手动忽略,但这不起作用.
有没有人有任何想法?
顺便说一句,我注意到这个错误仍然对Xamarin开放.