【问题标题】:The type or namespace 'App' does not exist in the current namespace当前命名空间中不存在类型或命名空间“App”
【发布时间】:2015-07-28 02:09:05
【问题描述】:

我在使用 Visual Studio 2015 中新制作的 Xamarin.Forms 应用时遇到问题。我将 Droid/iOS 项目添加到解决方案中,但它给了我一个构建错误提示...

The type or namespace 'App' does not exist in the current namespace

这是两个错误所在的示例。

机器人项目:

namespace MyApp.Droid
{
    [Activity (Label = "MyApp", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
    {
        protected override void OnCreate (Bundle bundle)
        {
            base.OnCreate (bundle);

            global::Xamarin.Forms.Forms.Init (this, bundle);
                LoadApplication (new MyApp.App ());
                //Error on the above line at MyApp.App ()
            }
        }
}

iOS 项目:

namespace MyApp.iOS
{
    [Register("AppDelegate")]
    public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
    {
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            global::Xamarin.Forms.Forms.Init ();
            LoadApplication (new MyApp.App ());
            //Error on above line in MyApp.App ()
            return base.FinishedLaunching (app, options);
        }
    }
}

这个解决方案刚刚完成,还没有完成编码,这可能是VS2015的问题吗?

【问题讨论】:

  • 您的两个平台项目是否引用了共享的 Forms PCL 项目?这就是 App 类默认存在的地方。

标签: xamarin xamarin.ios xamarin.android xamarin.forms


【解决方案1】:

这是一个仍然存在的问题。虽然这可能不是 7 月份的解决方案,但这是 2016 年 3 月 31 日的有效解决方案。

  • 清洁溶液
  • 构建 PCL
  • 从受影响的项目中删除 PCL 参考
  • 重新添加 PCL 参考
  • 构建

在打开 XAML 文件并切换回 PCL 项目中的 C# 文件后,有时也会发生这种情况。

【讨论】:

  • 我可以确认所描述的解决方法在撰写本文时有效。
  • 在 VS2017 中依然如此。仍然是一个有效的解决方案。谢谢。
  • 使用全新 Xamarin 应用程序的 Visual Studio 2019 预览版中仍然会出现该问题,但我可以确认此解决方案有效。有没有人将它作为错误报告给微软?
【解决方案2】:

您需要引用 Forms PCL 项目,除非您单独创建每个项目,否则它会在您创建项目时默认执行。只需右键单击 MyApp.Droid 项目 -> 添加引用 -> 解决方案 -> 检查 MyApp(?!?!)

【讨论】:

  • 这在 2018 年和 Visual Studio 2017 中仍然有效,无需执行上述任何更繁琐的解决方案。谢谢!
  • 非常有用的答案。令人惊讶的是 Xamarin 开箱即用。
【解决方案3】:

@silencedmessage 的回答帮助了我。

虽然我想补充一点,但我注意到我的所有 Xamarin 项目甚至都没有 PCL 引用。我从所有可能目标的空白 Xamarin Forms XAML 项目模板开始,在阅读此答案之前,我什至没有费心检查对 PCL 的引用。

长话短说:即使从一个空白的官方模板,您仍然应该检查 PCL 参考是否已添加到所有项目中。奇怪的东西。

【讨论】:

  • 我也发现这是真的。使用 VS 2015 企业更新 2
【解决方案4】:

我在使用 WPF 应用程序时遇到了同样的问题。我通过打开项目属性、将程序集名称复制到默认命名空间、保存文件并反过来做同样的事情来修复它。 这些值已经相同,但由于某种原因,它使 Visual Studio 向项目文件添加了很多内容。 这些被添加到第一个 PropertyGroup(包含 TargetFrameworkVersion):

<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>

所有“页面”标签都重新组合在一个新的 ItemGroup 中,与“编译”标签分开。

此外,添加了整个 ItemGroup:

  <ItemGroup>
    <BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
      <Visible>False</Visible>
      <ProductName>Microsoft .NET Framework 4.7.2 %28x86 and x64%29</ProductName>
      <Install>true</Install>
    </BootstrapperPackage>
    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
      <Visible>False</Visible>
      <ProductName>.NET Framework 3.5 SP1</ProductName>
      <Install>false</Install>
    </BootstrapperPackage>
  </ItemGroup>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 2020-05-31
    相关资源
    最近更新 更多