【发布时间】: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 文件没有任何更改。
我尝试过的事情:
- 强制清理和重建。
- 删除整个解决方案的所有 obj 和 bin 文件夹。
- 删除并重新添加 .UWP 项目中的所有引用。
- 将 Xamarin.Forms 升级到最新的稳定版 (3.1.0.637273)。
- 在 X.Mobile 项目中删除并重新添加 X.Core 引用。
- 删除 C:\Users\%username%.nuget 文件夹。
- 将 Microsoft.NETCore.UniversalWindowsPlatform 更新到最新的稳定版 (6.1.5)。
- 将目标版本更改为所有可用版本 - 我们已经在 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