gpt4 book ai didi

c# - 自动生成的 XAML.g.cs 文件在 Xamarin Forms PCL 项目中不可编译

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:34:41 25 4
gpt4 key购买 nike

我有一个 Xamarin 表单(我使用的是 Xamarin Studio 5.7)项目,其中包含一个包含 UI 组件的通用 PCL。我只是使用类(没有 XAML 设计器)来启动我的项目,它运行良好,可以编译,并且有一个带有几个子页面的 ContentPage。我决定添加一个新的 AboutPage.xaml 和 AboutPage.cs 文件,然后开始使用 UI 来编辑我的表单。因此,我通过 New File...Forms ContentPage XAML 创建了我的新页面......正如我上面提到的,它创建了我的两个文件。

关于页面.cs关于页面.xaml

生成的文件看起来像这样......

AboutPage.cs

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

namespace IPSND.Xamarin
{
public partial class AboutPage : ContentPage
{
public AboutPage ()
{
InitializeComponent ();
}
}
}

关于页面.xaml

<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="IPSND.Xamarin.AboutPage">
<ContentPage.Content>
<StackLayout>
<Image Id="ImageLogo" Aspect = "AspectFit"></Image>
</StackLayout>
</ContentPage.Content>
</ContentPage>

现在,这看起来没问题,我确保我的类声明包含命名空间。但是,当我编译时,生成的 AboutPage.xaml.g.cs 文件看起来像这样......请注意 using 语句是如何包含在命名空间内而不是文件顶部的。不幸的是,这是不可编译的。

我做错了什么?

//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18408
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace IPSND.Xamarin {
using System;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;


public partial class AboutPage : ContentPage {

private void InitializeComponent() {
this.LoadFromXaml(typeof(AboutPage));
}
}
}

这会导致以下错误

D:\SVN\IPSND.Xamarin\obj\Debug\AboutPage.xaml.g.cs(19,19): Error CS0234: The type or namespace name 'Forms' does not exist in the namespace 'IPSND.Xamarin' (are you missing an assembly reference?) (CS0234) (IPSND.Xamarin)

D:\SVN\IPSND.Xamarin\obj\Debug\AboutPage.xaml.g.cs(19,19): Error CS0234: The type or namespace name 'Forms' does not exist in the namespace 'IPSND.Xamarin' (are you missing an assembly reference?) (CS0234) (IPSND.Xamarin)

D:\SVN\IPSND.Xamarin\obj\Debug\AboutPage.xaml.g.cs(38,38): Error CS0246: The type or namespace name 'ContentPage' could not be found (are you missing a using directive or an assembly reference?) (CS0246) (IPSND.Xamarin)

所以,然后我想也许它混淆了我的命名空间 (IPSND.Xamarin) 的尾部和 Xamarin.Forms 命名空间的 using 头部...所以我更改了这个表单集上的命名空间(两者都是.cs 命名空间和 XAML 类声明)为 IPSND.Test。不幸的是,这导致了同样的错误。

显然正如 Jason 在下面的评论中指出的那样,这种具有 using 语句的配置不仅是允许的,而且根据本文档 here , 是为生成的文件而设计的。所以,我想这个问题的症结可能与我在 PCL 库中对 Xamarin.Forms 的引用更相关(有点像错误所说的)。使用上面引用的文档,我进入了我的 .cs 和 .xaml 文件并使它们完全匹配(完全没有使用语句,也没有在 Partial 声明中从 ContentPage 继承,但这并没有帮助...... .

最佳答案

好吧,感谢 Jason.....他走在正确的轨道上并成功了......我的 IPSND.Xamarin 命名空间是问题所在。只是更改特定 xaml/cs 上的命名空间不是问题,问题在于我的项目命名空间末尾有“Xamarin”。我复制了我的整个项目并将所有内容移至 IPSND.X 并且一切都编译正常。

关于c# - 自动生成的 XAML.g.cs 文件在 Xamarin Forms PCL 项目中不可编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28378392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com