Xamarin.Forms Windows 10通用错误“CS0103 InitializeComponent不存在”

时间:2016-01-19 09:26:05

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

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

无论如何......我什么也没做。只需按照说明操作并尝试启动Windows 10 Universal应用程序,但我收到此错误:

  

“CS0103 C#名称'InitializeComponent'不存在于   目前的背景。“

我用Google搜索了几次,但找不到有用的东西。

我也在这里尝试了这个例子:https://github.com/jamesmontemagno/Hanselman.Forms但错误相同。

有人知道Xamarin.Forms和Windows 10 Universal Apps会出现此错误吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

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

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

为了实现这一点,在.xaml文件的属性中,需要将Build Action设置为“Embedded Resource”,并且需要将Custom Tool设置为“MSBuild:UpdateDesignTimeXaml”

现在,即使正确设置了这些值,Xamarin中也会出现错误,导致文件无法生成并且您收到错误。

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

这是我在正常开发期间每天必须做的一些事情,并且在我切换到VS 2015时开始。你的里程可能会有所不同。

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

Xamarin能够做到这一点的方法是通过指定调用它在安装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(),并且错误应该消失。

答案 1 :(得分:1)

正如对此的更新:

  1. 新的,干净的Windows 10 Pro安装,包含VM中的所有更新。

  2. 全新,干净的Visual Studio 2015 Community Edition安装,选择了所有选项并进行了所有更新。

  3. 新项目:空白Xaml应用程序(Xamarin.Forms.Portable),带有nowt但生成的代码。

  4. 项目不会构建,因为InitializeComponent中的App.xaml.cs在当前上下文中不存在。

    意见:这个Xamarin插件是免费产品之上的免费插件,但即便如此,这种事情并没有真正激发你使用它。