与Xamarin.iOS具有等效标识错误的多个程序集

时间:2017-12-16 22:11:54

标签: c# .net xamarin.ios .net-standard

我尝试使用.NET Standard 2.0依赖项构建Xamarin iOS应用。其中一个依赖项包括对System.Reflection.Emit 4.3.0 NuGet包的引用。 这会在构建iOS应用时导致构建错误,因为此dll与System.Reflection.Emit的参考外观冲突:

  

CSC:错误CS1703:已导入具有等效标识的多个程序集:' C:\ Users \ ndesl.nuget \ packages \ system.reflection.emit \ 4.3.0 \ ref \ netstandard1.1 \ System。 Reflection.Emit.dll'和' C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ ReferenceAssemblies \ Microsoft \ Framework \ Xamarin.iOS \ v1.0 \ Facades \ System.Reflection.Emit.dll&# 39 ;.删除其中一个重复的引用。

任何人都知道如何处理这个问题? 那些组件是否应该被识别为同一组件的两个版本?

尝试在app.config中指定绑定重定向并没有帮助。我使用的是最新版本的Xamarin和VS2017。

可以在此处找到展示此问题的最小项目:https://github.com/nicodeslandes/ReflectionEmitBuildIssue

3 个答案:

答案 0 :(得分:3)

将您的iOS项目转换为使用csproj文件中的PackageReference而不是packages.config。有关详细信息,请参阅dotnet / announcements GitHub上的Issues with .NET Standard 2.0 with .NET Framework & NuGetUsing Xamarin Forms with .NET Standard – VS 2017 Edition

答案 1 :(得分:2)

注意:我在Visual Studio的MAC版本上也遇到了同样的问题,但希望这对您也能正常工作。

解决方案:花了几个小时后,我找到了答案为here的解决方法。 2。

只需在以下路径中删除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

答案 2 :(得分:1)

我将答案添加到列表中。为我解决的是删除csproj文件中的提示路径。一旦我做到了,一切都会建立并运行良好。