出现错误:“名称 InitializeComponent 在当前上下文中不存在”,在每个 xaml.cs 类(Xamarin Forms)中

Jai*_*tos 1 c# xaml initializecomponent xamarin xamarin.forms

因此,突然间,常见错误“名称 InitializeComponent 在当前上下文中不存在”出现在我所有解决方案中的每个 xaml.cs 类中,我已经尝试了针对此问题的多种常见解决方案,但似乎都不起作用。

\n

继承内容视图的 xaml.cs:

\n
using System;\nusing System.Collections.Generic;\nusing Xamarin.Forms;\n\nnamespace FirstApp.Renderers\n{\n    public partial class CustomExpansibleMenu : ContentView\n    {\n        public CustomExpansibleMenu()\n        {\n//Error here\n            InitializeComponent();\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

从内容页继承的 xaml.cs:

\n
using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing FirstApp.Services;\nusing Xamarin.Essentials;\nusing Xamarin.Forms;\n\nnamespace FirstApp.Pages\n{\n    public partial class ChatMenuPage : ContentPage\n    {\n        private NavigationService navigation;\n        public static double numPixelsW;\n        public static double numPixelsH;\n\n        public ChatMenuPage()\n        {\n            numPixelsH = DeviceDisplay.MainDisplayInfo.Height / DeviceDisplay.MainDisplayInfo.Density;\n            numPixelsW = DeviceDisplay.MainDisplayInfo.Width / DeviceDisplay.MainDisplayInfo.Density;\n\n            navigation = new NavigationService();\n\n//Error here \n            InitializeComponent();\n\n//Another error here, searchBox is the name of a frame in my xaml page, but //I cant access to it because of the previous error\n            searchBox.BorderWith = 3;\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这些是我尝试过的常见解决方案:

\n
    \n
  1. 验证 xaml\xc2\xb4s buildActions 是否设置为 EmbeddedResource\n2)验证 xaml 和 xaml.cs 中的命名空间是否相同。
  2. \n
  3. 在 xaml 中验证自定义工具:MSBuild:UpdateDesignTimeXaml
  4. \n
\n

Jai*_*tos 7

一年零四个月后,我发现这是一个幽灵错误,也就是说,问题是最终向我们展示的其他问题,如本文中讨论的那样。那么,实际错误是什么、在哪里以及我们如何解决它?嗯...坏消息,它可能是由很多很多错误引起的。这些是我遇到过的,尽管还有更多(我不会包括它们,因为我没有经历过它们)。

  1. Bug:首先验证这不是一个bug,为此,请在XAML文件中进行一些小的更改并保存它(一个空格+保存就足够了),如果问题解决了,那么恭喜,如果没有继续阅读,祝你好运...

  2. XAML.cs 文件的命名空间和 XAML 文件的 x:class 不匹配:这是迄今为止最常见的错误,也是我见过的唯一一个错误不显示为幽灵错误的情况。检查所有页面并更改名称空间或 x:class(如果它们不匹配)。

  3. 页面的构建操作或自定义工具设置不正确:在这种情况下,还有另一个容易识别的问题。要检查这 2 个属性是否设置正确,请右键单击页面,转到属性,然后验证“生成操作”是否设置为“EmbeddedResource”,以及“自定义工具”是否设置为 MSBuild:UpdateDesignTimeXaml。

  4. 解决方法:如果以前的解决方案对您不起作用,事情可能会变得复杂,这就是为什么在继续执行以下解决方案之前,请确保执行以下操作:1)删除存储库的 bin 和 obj 文件夹中的所有文件,2)清理项目+重建,3) 重新启动计算机。有时这可以解决问题(我不知道为什么),不用担心,这些文件并不重要。

  5. 常见的.csproj正在隐藏或删除XAML或XAML.cs文件:天知道为什么有时“<文件夹删除”会添加到您的常见.csproj文件中(可能类似于删除,例如隐藏或删除),删除一些解决方案中的 XAML 和 XAML.cs 文件(不用担心,这些文件很好)。要解决此问题,只需删除这些行即可。

  6. 发现同一依赖程序集的不同版本之间存在冲突:在这种情况下,您可能会将其视为警告或错误。为了解决这个问题,我在“.csproj”文件中添加了一些行。它会让你重新加载你的项目,一旦发生这种情况,你就可以删除它(你甚至可能被迫这样做)。我不建议这样做,除非你百分百确定这发生在你身上,原因是我不知道这是做什么的,我几个月前在博客上发现了它:

  <Target Name="GetDependencyTargetPaths" AfterTargets="ResolvePackageDependenciesForBuild">
    <ItemGroup>
      <TargetPathWithTargetPlatformMoniker Include="@(ResolvedCompileFileDefinitions)" IncludeRuntimeDependency="false" />
    </ItemGroup>
  </Target>

<PackageReference Include="System.Reflection.Emit">
      <Version>4.3.0</Version>
      <ExcludeAssets>All</ExcludeAssets>
      <IncludeAssets>none</IncludeAssets>
</PackageReference>
Run Code Online (Sandbox Code Playgroud)

正如我所说,这是一个幽灵错误,它可能是由于库之间的多个冲突、Visual Studio 随机更改文件的属性等等而发生的,因此,这些解决方案可能都不适合您。如果您以任何其他方式解决了该问题,请将其添加到本文中,这对每个人都非常有帮助。

如果你仍然遇到这个问题,你可以在其他帖子上找到更多信息,所以继续寻找它们,你最终会找到解决方案,祝你好运。(: