Xamarin.Forms Android项目构建报错求助:CS0234、CS0103等问题
Xamarin.Forms Android 构建错误排查与解决
遇到的构建错误
- CS0234: 命名空间“Xamarin.Forms”中不存在类型或命名空间名称“Forms”(是否缺少程序集引用?)
- CS0103: 当前上下文中不存在名称“LoadApplication”
- CS0234: 命名空间“Xamarin.Forms.Platform”中不存在类型或命名空间名称“Android”(是否缺少程序集引用?)
- CS0234: 命名空间“Xamarin.Essentials”中不存在类型或命名空间名称“Platform”(是否缺少程序集引用?)
- 引用链接失败。
- 未找到资源style/MainTheme.Base。
项目相关代码文件
MainActivity.cs
using Android.App; using Android.Content.PM; using Android.Runtime; using Android.OS; using Xamarin.Essentials; using Xamarin.Forms; namespace PFAG1_2Cars.Mobile.Droid { [Activity(Label = "PFAG1-2Cars", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity { protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); Xamarin.Essentials.Platform.Init(this, savedInstanceState); global::Xamarin.Forms.Forms.Init(this, savedInstanceState); LoadApplication(new App()); } public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Permission[] grantResults) { Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); base.OnRequestPermissionsResult(requestCode, permissions, grantResults); } } }
styles.xml
<?xml version="1.0" encoding="utf-8" ?> <resources> <style name="MainTheme" parent="MainTheme.Base"> <!-- As of Xamarin.Forms 4.6 the theme has moved into the Forms binary --> <!-- If you want to override anything you can do that here. --> <!-- Underneath are a couple of entries to get you started. --> <!-- Set theme colors from https://aka.ms/material-colors --> <!-- colorPrimary is used for the default action bar background --> <!--<item name="colorPrimary">#2196F3</item>--> <!-- colorPrimaryDark is used for the status bar --> <!--<item name="colorPrimaryDark">#1976D2</item>--> <!-- colorAccent is used as the default value for colorControlActivated which is used to tint widgets --> <!--<item name="colorAccent">#FF4081</item>--> </style> </resources>
PFAG1_2Cars.Mobile.Android.csproj
<?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProjectGuid>{37CE77A6-360E-4A23-BFBE-9A0D80F7DB93}</ProjectGuid> <ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> <TemplateGuid>{c9e5eea5-ca05-42a1-839b-61506e0a37df}</TemplateGuid> <OutputType>Library</OutputType> <RootNamespace>PFAG1_2Cars.Mobile.Droid</RootNamespace> <AssemblyName>PFAG1-2Cars.Mobile.Android</AssemblyName> <Deterministic>True</Deterministic> <AndroidApplication>True</AndroidApplication> <AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile> <AndroidResgenClass>Resource</AndroidResgenClass> <AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest> <MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix> <MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix> <AndroidUseLatestPlatformSdk>false</AndroidUseLatestPlatformSdk> <TargetFrameworkVersion>v11.0</TargetFrameworkVersion> <AndroidEnableSGenConcurrent>true</AndroidEnableSGenConcurrent> <AndroidUseAapt2>true</AndroidUseAapt2> <AndroidHttpClientHandlerType>Xamarin.Android.Net.AndroidClientHandler</AndroidHttpClientHandlerType> <NuGetPackageImportStamp> </NuGetPackageImportStamp> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> <DebugType>portable</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug</OutputPath> <DefineConstants>DEBUG;</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <AndroidLinkMode>None</AndroidLinkMode> <EmbedAssembliesIntoApk>false</EmbedAssembliesIntoApk> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugSymbols>true</DebugSymbols> <DebugType>portable</DebugType> <Optimize>true</Optimize> <OutputPath>bin\Release</OutputPath> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <AndroidManagedSymbols>true</AndroidManagedSymbols> <EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk> </PropertyGroup> <ItemGroup> <Reference Include="Mono.Android" /> <Reference Include="System" /> <Reference Include="System.Core" /> <Reference Include="System.Xml.Linq" /> <Reference Include="System.Xml" /> <Reference Include="System.Numerics" /> <Reference Include="System.Numerics.Vectors" /> </ItemGroup> <ItemGroup> <PackageReference Include="System.Data.SqlClient"> <Version>4.8.6</Version> </PackageReference> <PackageReference Include="Xamarin.Essentials"> <Version>1.8.1</Version> </PackageReference> <PackageReference Include="Xamarin.Forms"> <Version>5.0.0.2662</Version> </PackageReference> </ItemGroup> <ItemGroup> <Compile Include="MainActivity.cs" /> <Compile Include="Resources\Resource.designer.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> <ItemGroup> <None Include="Resources\AboutResources.txt" /> <None Include="Assets\AboutAssets.txt" /> <None Include="Properties\AndroidManifest.xml" /> </ItemGroup> <ItemGroup> <AndroidResource Include="Resources\values\styles.xml" /> <AndroidResource Include="Resources\values\colors.xml" /> <AndroidResource Include="Resources\mipmap-anydpi-v26\icon.xml" /> <AndroidResource Include="Resources\mipmap-anydpi-v26\icon_round.xml" /> <AndroidResource Include="Resources\mipmap-hdpi\icon.png" /> <AndroidResource Include="Resources\mipmap-hdpi\launcher_foreground.png" /> <AndroidResource Include="Resources\mipmap-mdpi\icon.png" /> <AndroidResource Include="Resources\mipmap-mdpi\launcher_foreground.png" /> <AndroidResource Include="Resources\mipmap-xhdpi\icon.png" /> <AndroidResource Include="Resources\mipmap-xhdpi\launcher_foreground.png" /> <AndroidResource Include="Resources\mipmap-xxhdpi\icon.png" /> <AndroidResource Include="Resources\mipmap-xxhdpi\launcher_foreground.png" /> <AndroidResource Include="Resources\mipmap-xxxhdpi\icon.png" /> <AndroidResource Include="Resources\mipmap-xxxhdpi\launcher_foreground.png" /> </ItemGroup> <ItemGroup> <Folder Include="Resources\drawable\" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\PFAG1-2Cars.Mobile\PFAG1-2Cars.Mobile.csproj"> <Project>{F19BC5C6-F7E9-478B-93F6-DF4225B7D476}</Project> <Name>PFAG1-2Cars.Mobile</Name> </ProjectReference> </ItemGroup> <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" /> </Project>
错误排查与解决方案
针对命名空间/引用缺失错误(CS0234、CS0103、引用链接失败)
这些错误核心原因是NuGet包未正确加载或项目引用异常,按以下步骤处理:
- 清理重建解决方案:右键解决方案 → 清理解决方案,再右键 → 重建解决方案,强制重新生成所有依赖项。
- 修复NuGet包:
- 打开NuGet包管理器,检查Android项目中
Xamarin.Forms和Xamarin.Essentials包是否已正确安装,版本与共享项目保持一致。 - 若存在异常,卸载这两个包后重新安装对应版本(项目中指定的Xamarin.Forms 5.0.0.2662、Xamarin.Essentials 1.8.1)。
- 打开NuGet包管理器,检查Android项目中
- 验证项目引用:确认Android项目对共享项目
PFAG1-2Cars.Mobile的引用路径正确,且共享项目已成功构建。
针对未找到MainTheme.Base错误
MainTheme.Base是Xamarin.Forms Android项目的基础主题,缺失会导致资源加载失败,处理方式:
- 添加基础主题定义:在
styles.xml中补充MainTheme.Base的定义,示例如下:<style name="MainTheme.Base" parent="Theme.MaterialComponents.Light.DarkActionBar"> <item name="windowNoTitle">true</item> <item name="windowActionBar">false</item> <item name="colorPrimary">@color/primary</item> <item name="colorPrimaryDark">@color/primaryDark</item> <item name="colorAccent">@color/accent</item> </style> - 补充颜色资源:确保
Resources/values/colors.xml中存在对应颜色值:<?xml version="1.0" encoding="utf-8"?> <resources> <color name="primary">#2196F3</color> <color name="primaryDark">#1976D2</color> <color name="accent">#FF4081</color> </resources> - 重新生成资源文件:右键Android项目 → 清理,再重新生成项目,触发
Resource.designer.cs的更新。
内容的提问来源于stack exchange,提问作者Mohammed Elyaakoubi
相关产品推荐
相关产品推荐

