Xamarin.Forms – XamlCompilation MissingMethodException

我想提高我的Xamarin.Forms UWP应用程序的性能,因为它在发布模式下非常慢(“.NET native”选中)。 所以我在PCL项目的汇编级别应用XAMLC:

[assembly: XamlCompilation (XamlCompilationOptions.Compile)] namespace MyApp { } 

但是使用此属性我收到运行时错误:

“未找到方法:’Void Xamarin.Forms.Xaml.Internals.SimpleValueTargetProvider..ctor(System.Object [])’。”

根据这个:

https://github.com/xamarin/Xamarin.Forms/blob/master/docs/Xamarin.Forms.Xaml/Xamarin.Forms.Xaml.Internals/SimpleValueTargetProvider.xml

SimpleValueTargetProvider类有2个版本:

  • 1.5.0.0 – 带有一个参数System.Object []的构造函数
  • 2.0.0.0 – 具有2个参数System.Object []和System.Object的构造函数

我使用Xamarin.Forms 2.3.3.163-pre3所以我在我的项目中使用第二个版本(当我导航到Xamarin.Forms.Xaml.Internals中的SimpleValueTargetProvider时,我可以看到带有2个参数的构造函数)。 我的理解是,显然“某些东西”仍在调用SimpleValueTargetProvider 1.5.0.0,但我不知道它是什么。

我删除了所有第三方组件,但没有帮助。 我使用了融合日志来了解发生了什么,但这就是我得到的(说实话我不知道这是否与我面临的问题有关):

 > *** Assembly Binder Log Entry (10/26/2016 @ 9:09:42 PM) *** > > The operation failed. Bind result: hr = 0x80070002. The system cannot > find the file specified. > > Assembly manager loaded from: > C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll Running under > executable C:\Program Files (x86)\Microsoft Visual > Studio\VS15Preview\Common7\IDE\devenv.exe > --- A detailed error log follows. > > === Pre-bind state information === LOG: DisplayName = XamlDesignerFaultInjection (Partial) WRN: Partial binding information > was supplied for an assembly: WRN: Assembly Name: > XamlDesignerFaultInjection | Domain ID: 1 WRN: A partial bind occurs > when only part of the assembly display name is provided. WRN: This > might result in the binder loading an incorrect assembly. WRN: It is > recommended to provide a fully specified textual identity for the > assembly, WRN: that consists of the simple name, version, culture, and > public key token. WRN: See whitepaper > http://go.microsoft.com/fwlink/?LinkId=109270 for more information and > common solutions to this issue. LOG: Appbase = file:///C:/Program > Files (x86)/Microsoft Visual Studio/VS15Preview/Common7/IDE/ LOG: > Initial PrivatePath = NULL LOG: Dynamic Base = NULL LOG: Cache Base = > NULL LOG: AppName = devenv.exe Calling assembly : (Unknown). > === LOG: This bind starts in default load context. LOG: Using application configuration file: > C:\Users\blaze\AppData\Local\Microsoft\VisualStudio\15.0_2f751565\devenv.exe.config > LOG: Using host configuration file: LOG: Using machine configuration > file from > C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. > LOG: Policy not being applied to reference at this time (private, > custom, partial, or location-based assembly bind). LOG: Attempting > download of new URL file:///C:/Program Files (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/XamlDesignerFaultInjection.DLL. LOG: > Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/XamlDesignerFaultInjection/XamlDesignerFaultInjection.DLL. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/PublicAssemblies/XamlDesignerFaultInjection.DLL. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/PublicAssemblies/XamlDesignerFaultInjection/XamlDesignerFaultInjection.DLL. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/PrivateAssemblies/XamlDesignerFaultInjection.DLL. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/PrivateAssemblies/XamlDesignerFaultInjection/XamlDesignerFaultInjection.DLL. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/XamlDesignerFaultInjection.DLL. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/XamlDesignerFaultInjection/XamlDesignerFaultInjection.DLL. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/CommonExtensions/Platform/Debugger/XamlDesignerFaultInjection.DLL. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/CommonExtensions/Platform/Debugger/XamlDesignerFaultInjection/XamlDesignerFaultInjection.DLL. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/CommonExtensions/Platform/DiagnosticsHub/XamlDesignerFaultInjection.DLL. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/CommonExtensions/Platform/DiagnosticsHub/XamlDesignerFaultInjection/XamlDesignerFaultInjection.DLL. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/PrivateAssemblies/DataCollectors/XamlDesignerFaultInjection.DLL. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/PrivateAssemblies/DataCollectors/XamlDesignerFaultInjection/XamlDesignerFaultInjection.DLL. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/PrivateAssemblies/DataCollectors/x86/XamlDesignerFaultInjection.DLL. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/PrivateAssemblies/DataCollectors/x86/XamlDesignerFaultInjection/XamlDesignerFaultInjection.DLL. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/XamlDesignerFaultInjection.EXE. LOG: > Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/XamlDesignerFaultInjection/XamlDesignerFaultInjection.EXE. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/PublicAssemblies/XamlDesignerFaultInjection.EXE. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/PublicAssemblies/XamlDesignerFaultInjection/XamlDesignerFaultInjection.EXE. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/PrivateAssemblies/XamlDesignerFaultInjection.EXE. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/PrivateAssemblies/XamlDesignerFaultInjection/XamlDesignerFaultInjection.EXE. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/XamlDesignerFaultInjection.EXE. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/XamlDesignerFaultInjection/XamlDesignerFaultInjection.EXE. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/CommonExtensions/Platform/Debugger/XamlDesignerFaultInjection.EXE. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/CommonExtensions/Platform/Debugger/XamlDesignerFaultInjection/XamlDesignerFaultInjection.EXE. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/CommonExtensions/Platform/DiagnosticsHub/XamlDesignerFaultInjection.EXE. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/CommonExtensions/Platform/DiagnosticsHub/XamlDesignerFaultInjection/XamlDesignerFaultInjection.EXE. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/PrivateAssemblies/DataCollectors/XamlDesignerFaultInjection.EXE. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/PrivateAssemblies/DataCollectors/XamlDesignerFaultInjection/XamlDesignerFaultInjection.EXE. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/PrivateAssemblies/DataCollectors/x86/XamlDesignerFaultInjection.EXE. > LOG: Attempting download of new URL file:///C:/Program Files > (x86)/Microsoft Visual > Studio/VS15Preview/Common7/IDE/PrivateAssemblies/DataCollectors/x86/XamlDesignerFaultInjection/XamlDesignerFaultInjection.EXE. > LOG: All probing URLs attempted and failed. 

这是Xamarin.Forms或XamlCTask中的错误吗? 有没有人遇到过这个问题或知道如何修复它?

  • Windows 10 64位
  • 视觉学习15预览5
  • Xamarin 4.2.1.14
  • Xamarin.Forms 2.3.3.163-pre3

提前致谢

这可能是IDE或项目级别的缓存问题。

如果它在IDE级别: – 执行清理 – 重新启动VS或XS – 重建

但你可能已经尝试过了。

我的猜测是,其中一个nuget更新未正确清理,并且您在解决方案的不同项目中引用了不同版本的XF,或者一个.csproj文件引用了旧的.targets文件。

一些人工清理大家有望解决这个问题。

如果您的项目依赖于使用XamlC的第三方程序集,并且该程序集是基于XF <2.3.3构建的,那么您仍然可以解决此问题。

存在修复程序,将作为XF 2.3.3的第一个服务版本的一部分发布