我有两个使用XAML页面的Xamarin.Forms项目。我们称之为ProjectOK和ProjectBroken。
ProjectOK构建正常。 ProjectBroken失败,说找不到 InitializeComponent 。调查(通过将构建输出增加到Normal)显示这是因为ProjectBroken根本不处理我的XAML文件。在ProjectOK的构建输出中,我得到:
_CoreXamlG:
Source: Page1.xaml
Language: C#
AssemblyName: App1
OutputFile obj\Debug\App1.Page1.xaml.g.cs
ProjectBroken不包含此类行。
在解决方案资源管理器中,两个项目中XAML页面的属性完全相同。 Page1.xaml文件设置为:嵌入式资源,不复制,自定义工具= MSBuild:UpdateDesignTimeXAML 。 Page1.xaml.cs设置为:编译,不要复制。
打开项目文件,我发现ProjectOK包含:
<Compile Include="Page1.xaml.cs">
<DependentUpon>Page1.xaml</DependentUpon>
</Compile>
后来:
<ItemGroup>
<EmbeddedResource Include="Page1.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
ProjectBroken不包含对我新创建的Page1.xaml的引用。
即使我手动将上面的行添加到ProjectBroken.csproj文件中,它仍然不会调用XAML编译器。
所以,似乎某些东西在我的解决方案文件夹之外被打破了。有没有人知道这可能是什么,更重要的是 - 我怎么能'重置'它?