我尝试使用.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
答案 0 :(得分:3)
将您的iOS项目转换为使用csproj文件中的PackageReference
而不是packages.config。有关详细信息,请参阅dotnet / announcements GitHub上的Issues with .NET Standard 2.0 with .NET Framework & NuGet和Using 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文件中的提示路径。一旦我做到了,一切都会建立并运行良好。