对类型“Assembly”的引用声称它在“System.Runtime”中定义,但在 Xamarin UWP 中找不到

Posted

技术标签:

【中文标题】对类型“Assembly”的引用声称它在“System.Runtime”中定义,但在 Xamarin UWP 中找不到【英文标题】:Reference to type 'Assembly' claims it is defined in 'System.Runtime', but it could not be found in Xamarin UWP 【发布时间】:2019-05-11 09:45:56 【问题描述】:

已经发现同样的问题here。

我的错误:

严重性代码描述项目文件行抑制状态 错误 CS7069 引用类型“Assembly”声称它是在“System.Runtime”中定义的,但找不到

该线程上的解决方案是将所有项目中的 xamarin 表单降级到版本 2.5.1.527436。但我不能在我的项目中这样做,因为我正在使用最新的 xamarin 表单中提供的一些功能,例如 android 底部选项卡功能、编辑器的 autosize 属性和 listview 的 flowdirection 属性。

我在将 xamarin 表单从 2.5.0.121934 更新到 3.4.0.1008975 后遇到了这个问题。 问题仅在 UWP 部分。 Android 和 ios 应用运行良好。

错误行:

var rendererAssemblies = new List<Assembly>
   
       typeof(ImageCircleRenderer).GetTypeInfo().Assembly
   ;
rendererAssemblies.AddRange(Rg.Plugins.Popup.Popup.GetExtraAssemblies());
Rg.Plugins.Popup.Popup.Init();
Xamarin.Forms.Forms.Init(e, rendererAssemblies);

那么如何在不降级 Xamarin.Forms 的情况下解决此问题?

更新

在另一个项目中再次面临同样的问题。但是这里的解决方案不是修复错误。将 windows 项目的目标版本更改为windows 10, version 1809(10.0;Build 17763),将最小版本更改为Windows 10 Fall Creators Update(10.0; Build 16299)。截图添加如下:请提出解决方案。

Xamarin.Forms 版本:3.4.0.1008975

【问题讨论】:

【参考方案1】:

正如链接线程所提到的,问题是您的应用必须将最低 UWP 版本设置为 Fall Creators Update (16299),因为这是第一个支持 .NET Standard 2.0 的版本。

3.0 版中,Xamarin.Forms 放弃了对可移植类库的支持,现在只针对.NET Standard 2.0。这意味着您必须至少在 UWP 中定位 Fall Creators Update (16299) 以确保它可以被引用。

要将您的 UWP 项目重新定位到较新版本,请在 Solution Explorer 中右键单击 UWP 项目节点,选择 Properties,然后使用两个下拉菜单至少选择两个版本都是 16299。

只要您不需要支持 Windows 10 移动版,更改最低版本应该没问题,因为绝大多数用户已经使用 1803 版,而秋季创作者更新是 1709 版。请参阅以下使用图(@987654322 @)

【讨论】:

我把这两个版本都改成了 Fall Creators Update (16299) 现在问题已经解决了,非常感谢。 实际上我建议将目标版本设置为最新的可用版本,并将最小版本保留在 FCU。优点是最新的 SDK 让您可以访问最新的功能,您可以通过使用条件代码来使用这些功能 添加了问题中可用的当前目标版本选项的屏幕截图,如何知道哪个是最新的可用版本? 版本 1809 是最新的吗? 是的 :-) 。虽然版本控制很混乱,但经验法则是版本号格式是 YYMM,其中 YY 是发布的年份和 MM 月份。您也可以在括号中使用构建版本号,它只是遵循“越大越新”的规则:-)

以上是关于对类型“Assembly”的引用声称它在“System.Runtime”中定义,但在 Xamarin UWP 中找不到的主要内容,如果未能解决你的问题,请参考以下文章

C# 对类型组件的引用声称它在系统中定义,但未找到

CS1684 对 System.Windows.Input.ICommand 类型的引用声称它在“xxx”中定义但找不到

对“MarshalByRefObject”类型的引用声称它是在“System.Runtime”中定义的,但找不到

如何修复“对类型 'IAsyncEnumerable<>' 的引用声称它是在 'System.Interactive.Async' 中定义的,但找不到它”?

C#Assembly详解

FTP SYST回答“Unix类型:L8”