【问题标题】:Xamarin.Forms Windows 10 Universal Error "CS0103 InitializeComponent does not exist"Xamarin.Forms Windows 10 通用错误“CS0103 InitializeComponent 不存在”
【发布时间】:2016-04-24 16:47:12
【问题描述】:

我有一个带有 .Droid-Solution 和 SharedProject 的工作 Android 项目。我在手机上启动了该应用程序,效果很好。现在,我刚刚添加了一个空白的 Windows 10 通用解决方案并在此处执行了说明:http://developer.xamarin.com/guides/xamarin-forms/platform-features/windows/installation/universal/

不管怎样……我什么也没做。只是按照说明尝试启动 Windows 10 通用应用程序,但我收到此错误:

"CS0103 C#名称'InitializeComponent'不存在于 当前上下文。”

我用谷歌搜索了几次,但没有找到有用的东西。

我也尝试了这里的示例:https://github.com/jamesmontemagno/Hanselman.Forms 出现同样的错误。

有人知道Xamarin.Forms 和 Windows 10 通用应用程序的这个错误吗?

【问题讨论】:

  • 你从哪里得到这个错误?在 Win 10 项目中还是在您大部分代码所在的 common pcl 项目中?如果它是通用项目,那么您需要确保在您的通用 xamarin xaml 文件上设置了适当的构建操作和类型,并可能手动运行自定义工具。如果你能确认错误在哪里,我会回复更详细的说明。
  • 我在每个 ContentPage 的 SharedProject 中都遇到错误。我不是很确定,但也许它和这个错误是一样的:xamarin bugzilla。 “确保在常见的 xamarin xaml 文件上设置适当的构建操作和类型并可能运行自定义工具手册”到底是什么意思?
  • 好吧,看起来,是同一个bug。我找到了这个thread@GaborNemeth said: Having the same problem as @"PrabhatGupta.2760" Cannot compile if any XAML page is coming from shared project. I created a sample project to reproduce this issue and attached it to https://bugzilla.xamarin.com/show_bug.cgi?id=36935

标签: c# win-universal-app xamarin.forms initializecomponent


【解决方案1】:

就像对此的更新:

  1. 全新、干净的 Windows 10 专业版安装,所有更新都在 VM 中。

  2. 全新、干净的 Visual Studio 2015 社区版安装,所有选项均已选中并更新。

  3. 新项目:空白 Xaml 应用程序 (Xamarin.Forms.Portable),现在已生成代码。

由于App.xaml.cs 中的InitializeComponent 在当前上下文中不存在,因此项目将无法构建。

意见:此 Xamarin 插件是免费产品之上的免费插件,但即便如此,这种东西并不能真正激发您使用它...

【讨论】:

    【解决方案2】:

    每次在 Xamarin.Forms 中创建 .XAML 页面时,都会在三个不同的地方使用部分类定义。

    您的实际 .xaml 文件将在定义命名空间和类名的根元素上具有 Class="" 属性。 实际的根元素类型将定义新 .xaml 页面作为子类的基类。默认情况下,这将是 ContentPage。

    您还会获得一个链接的 .xaml.cs 文件,其中还包含部分类定义。这是您的代码隐藏文件,您放置页面特定代码的位置,这也是从构造函数调用 InitializeComponent() 的位置。

    此调用用于解析 xaml 内容并填写对您提供的所有视图的引用,以便在 xaml 中使用 x:name="something"。

    InitializeComponent() 由 xamarin 自动生成,它是项目输出的一部分,每次编辑 .xaml 文件时都会重新生成它。

    为了实现这一点,需要在 .xaml 文件的属性中将构建操作设置为“嵌入式资源”,并且需要将自定义工具设置为“MSBuild:UpdateDesignTimeXaml”

    现在,即使这些值设置正确,Xamarin 中也存在错误,可能导致文件无法生成并出现错误。

    当您收到此错误时,首先要尝试的是右键单击 .xaml 文件并单击“运行自定义工具”。 您只需执行一次,在一个 xaml 文件上,该工具将自动为您项目中的所有 .xaml 文件运行。

    这是我在正常开发过程中每天必须做一次的事情,它从我切换到 VS 2015 开始。你的里程可能会担心。

    要检查的另一件非常重要的事情是 .csproj 文件中的 BuildTargets。

    Xamarin 能够做到这一点的方式是通过指定构建操作来调用它的 DLL,您在安装 Xamarin.Forms nuget 包时获得该 DLL。有时构建操作导入行会搞砸,这会导致各种问题。

    卸载 .csproj 并找到导入 Xamarin.Forms.targets 的行。 它应该看起来像这样:

    <Import Project="..\..\packages\Xamarin.Forms.2.0.0.6484\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets" Condition="Exists('..\..\packages\Xamarin.Forms.2.0.0.6484\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" />
    

    确保此处的版本与您的 packages.config 文件中的 Xamarin.Forms 版本相匹配,然后确保您实际上可以导航到项目的根文件夹,并找到重要行所指的实际文件。即,packages\xamarin...\Xamarin.Forms.targets

    一个常见的做法是从 \packages\ 中删除所有内容,并让 nuget 在您的下一次构建中重新下载所有内容。只需确保 .csproj 导入中的版本与 packages.config 中的版本相同即可。

    如果所有这些都完成了,你应该有一个有效的生成的部分类,它实现了 InitializeComponent() 并且错误应该消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-03
      • 1970-01-01
      • 2020-08-17
      • 2019-01-05
      • 1970-01-01
      • 2022-11-17
      • 1970-01-01
      • 2018-06-06
      相关资源
      最近更新 更多