如何解决在新导入的Xamarin Forms Nuget包上导入的多个程序集



免责声明,我正在创建有问题的Nuget

我目前正在为Xamarin Forms创建一个Nuget包,这个包做得很好。这是回购。我已经完全工作了,没有问题。

我也一直在测试它,将它作为另一个封闭源代码repo中的项目参考。这也一直运行得很好。

然而,我决定从使用项目引用切换到使用实际的Nuget,因为我不再为了使代码正确工作而随意修改代码,而且我遇到了麻烦。

在我包括包裹的那一刻,我收到了超过5000个错误,这些错误要么是

(/Users/UserHere/Projects/PopupsError/PopupsError.Android/CSC: Error CS1703: Multiple assemblies with equivalent identity have been imported: /Users/UserHere/.nuget/packages/awaitablepopups/0.2.5/lib/netstandard2.0/System.Xml.XmlSerializer.dll' and /Library/Frameworks/Mono.framework/External/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Xml.XmlSerializer.dll. Remove one of the duplicate references. (CS1703) (PopupsError.Android))

(/Users/UserHere/Projects/PopupsError/PopupsError.Android/Resources/Resource.designer.cs(36,36): Error CS0731: The type forwarder for type 'System.Attribute' in assembly 'netstandard' causes a cycle (CS0731) (PopupsError.Android))

和许多其他人,我有一个全新的回购,这里只添加了Nuget

最让我困惑的是,同一个项目可以作为项目引用,但如果我将其作为Nuget并添加进去,那么它就会抛出上面看到的错误。

我的印象是,这是一个我可以添加的小选项,但经过一些研究,我无法确定我应该勾选哪个小选项。如有任何帮助,将不胜感激

这有时会让人头疼。

对于从packages.config迁移到PackageReference的本地项目

你必须从物理磁盘上删除重复的nuget。

删除此文件夹/Users/UserHere/.nuget/packages/awaitablepopups/0.2.5/lib/netstandard2.0

由于您提到您在csproj文件中从packages.config移动到了PackageReference,因此您还必须注意,csproj仍然没有旧样式的导入,您可以通过将csproj文件与新创建的项目

csproj从csproj文件中删除"package.config"和"app.config"引用。

更新

对于NuGet

  • 检查.nuspec文件并删除冗余导入
  • 清理项目,手动删除bin obj文件夹
  • 删除NuGet.Build.Packaging,它不是必需的。它添加了所有这些冗余组件

最新更新