【问题标题】:UWP - Cannot resolve Assembly or Windows Metadata fileUWP - 无法解析程序集或 Windows 元数据文件
【发布时间】:2018-12-26 12:57:31
【问题描述】:

一切进展顺利,直到几天前 UWP 在从 VSTS (git) 拉出新版本并出现错误后突然停止构建:

  • 无法解析程序集或 Windows 元数据文件“类型 Universe 无法解析程序集:X.Core,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null。”
  • 无法复制文件“obj\x86\Debug\MainPage.xbf”,因为找不到。
  • 无法复制文件“obj\x86\Debug\App.xbf”,因为找不到。
  • 无法复制文件“obj\x86\Debug\X.Mobile.UWP.xr.xml”,因为找不到。

我的解决方案结构如下:

  • X.Core(.NET Standard 类库)
  • X.Mobile(.NET 标准 PCL)
  • X.Mobile.UWP(UWP 特定项目)

UWP 引用 Mobile,Mobile 引用 Core(Core 也被 Web API 项目引用)。

我从源代码管理中提取的提交对 X.Mobile.UWP .csproj 文件没有任何更改。

我尝试过的事情:

  1. 强制清理和重建。
  2. 删除整个解决方案的所有 obj 和 bin 文件夹。
  3. 删除并重新添加 .UWP 项目中的所有引用。
  4. 将 Xamarin.Forms 升级到最新的稳定版 (3.1.0.637273)。
  5. 在 X.Mobile 项目中删除并重新添加 X.Core 引用。
  6. 删除 C:\Users\%username%.nuget 文件夹。
  7. 将 Microsoft.NETCore.UniversalWindowsPlatform 更新到最新的稳定版 (6.1.5)。
  8. 将目标版本更改为所有可用版本 - 我们已经在 build 16299 上运行了几个月。

我已经断断续续地解决这个问题好几天了。 Android 和 iOS 项目构建得很好,考虑到 UWP 一直是我们最稳定的平台,这具有讽刺意味。有人有什么见解吗?

编辑: 在X.Mobile.UWP项目中直接添加对X.Core的引用后,就可以编译了。这不应该是答案,因为 UWP 从不直接引用 Core。

【问题讨论】:

  • 什么是 .Net 标准 PCL?如果没有详细的可重现项目,我看不到问题,您会创建一个最小的重现样本吗?
  • .NET Standard PCL 是“共享”项目。最初的 .NET Core PCL 已被弃用,因此当您在 VS2017 中创建项目时,您的代码共享策略选项是共享项目和 .NET Standard。我显然无法在具有相同结构的全新项目中重现这一点。如果可以的话,我会继续尝试复制并添加到我的 GitHub 的链接。

标签: xamarin.forms uwp


【解决方案1】:

我找到了解决办法。

我遇到了同样的问题,因为我在 Xamarin.Forms 解决方案中添加了一个新的(.Net Standard 2.0 类库)项目。

简而言之,最初我的解决方案包括以下项目:

BackgroundTaskTest (which have all my Views and ViewModels)
BackgroundTaskTest.Android
BackgroundTaskTest.iOS
BackgroundTaskTest.UWP

突然我决定在同一个解决方案文件夹中添加一个名为“BackgroundTaskTest.Common”的类库:

BackgroundTaskTest.Common (new one)
BackgroundTaskTest (which have all my Views and ViewModels)
BackgroundTaskTest.Android
BackgroundTaskTest.iOS
BackgroundTaskTest.UWP

Android 运行良好,但 UWP 项目不喜欢那个新邻居(在您的情况下,它被命名为“X.Core”)。所以我再次将我的课程从那个新项目移到了“BackgroundTaskTest”,并从我的解决方案中删除了“BackgroundTaskTest.Common”以及所有引用,它已经开始工作了。

为了最终确定并使其简短,请将您的 X.Mobile.csproj 文件与 X.Mobile.Core.csproj 文件进行比较。您会在差异中找到问题。另外,请尝试检查您对 X.Core 项目的所有依赖项,以确保它们是相同的。

【讨论】:

  • 通过添加与 UWP 项目等效的“Common”来解决它。真的很奇怪。
【解决方案2】:

我安装了 NuGet 包“NETStandard.Library”,并向我的 UWP 项目添加了对我所有 .Net 标准库的引用。这为我解决了问题!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-29
    • 2016-07-05
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    相关资源
    最近更新 更多