0

所以突然间,在我的所有解决方案中的每个 xaml.cs 类中都出现了常见错误“当前上下文中不存在名称 InitializeComponent”,我尝试了多种常见解决方案来解决这个问题,但似乎没有一个有效。

继承 Content 视图的 xaml.cs:

using System;
using System.Collections.Generic;
using Xamarin.Forms;

namespace FirstApp.Renderers
{
    public partial class CustomExpansibleMenu : ContentView
    {
        public CustomExpansibleMenu()
        {
//Error here
            InitializeComponent();
        }
    }
}

从内容页面继承的 xaml.cs:

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using FirstApp.Services;
using Xamarin.Essentials;
using Xamarin.Forms;

namespace FirstApp.Pages
{
    public partial class ChatMenuPage : ContentPage
    {
        private NavigationService navigation;
        public static double numPixelsW;
        public static double numPixelsH;

        public ChatMenuPage()
        {
            numPixelsH = DeviceDisplay.MainDisplayInfo.Height / DeviceDisplay.MainDisplayInfo.Density;
            numPixelsW = DeviceDisplay.MainDisplayInfo.Width / DeviceDisplay.MainDisplayInfo.Density;

            navigation = new NavigationService();

//Error here 
            InitializeComponent();

//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
            searchBox.BorderWith = 3;
        }
    }
}

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

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

1 回答 1

1

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

  1. 错误:首先验证这不是错误,为此在XAML文件中做一个小改动并保存(空格+保存就足够了),如果问题解决了恭喜,如果没有继续阅读并祝你好运...

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

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

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

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

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

  <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>

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

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

于 2021-11-22T19:23:32.890 回答