在Xamarin Android项目中的android Assets中添加文件夹会引发Build Error

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Xamarin Android项目中的android Assets中添加文件夹会引发Build Error相关的知识,希望对你有一定的参考价值。

无法在Xamarin android项目中的Assets中添加目录和子目录。

IDE:适用于Mac的Visual Studio社区版本:7.3.2(版本12)

操作系统:MacOS High Sierra版本:10.13.2

错误:/ Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(2,2):错误MSB3025:源文件“Assets / Dir /”实际上是一个目录。 “复制”任务不支持复制目录。 (MSB3025)(assetsCheck)

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(2,2):错误MSB3025:源文件“Assets / Dir / SubDir /”实际上是一个目录。 “复制”任务不支持复制目录。 (MSB3025)(assetsCheck)

注意能够在Windows 10系统中使用Visual Studio社区成功构建。

.csproj文件

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="..packagesXamarin.Build.Download.0.4.3uildXamarin.Build.Download.props" Condition="Exists('..packagesXamarin.Build.Download.0.4.3uildXamarin.Build.Download.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{A6BF443D-8B89-4044-B951-E346FA8E68D3}</ProjectGuid>
    <ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
    <OutputType>Library</OutputType>
    <RootNamespace>ScormReader.Droid</RootNamespace>
    <AssemblyName>ScormReader.Droid</AssemblyName>
    <TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
    <AndroidApplication>True</AndroidApplication>
    <AndroidResgenFile>ResourcesResource.designer.cs</AndroidResgenFile>
    <AndroidResgenClass>Resource</AndroidResgenClass>
    <AndroidManifest>PropertiesAndroidManifest.xml</AndroidManifest>
    <MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
    <MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
    <AndroidUseLatestPlatformSdk>true</AndroidUseLatestPlatformSdk>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>binDebug</OutputPath>
    <DefineConstants>DEBUG;</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <AndroidLinkMode>None</AndroidLinkMode>
    <AndroidSupportedAbis>arm64-v8a;armeabi;armeabi-v7a;x86</AndroidSupportedAbis>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>binRelease</OutputPath>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <AndroidManagedSymbols>true</AndroidManagedSymbols>
    <AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Xml" />
    <Reference Include="System.Core" />
    <Reference Include="Mono.Android" />
    <Reference Include="Xamarin.Android.Support.Annotations">
      <HintPath>..packagesXamarin.Android.Support.Annotations.25.3.1libMonoAndroid70Xamarin.Android.Support.Annotations.dll</HintPath>
    </Reference>
    <Reference Include="Xamarin.Android.Support.Compat">
      <HintPath>..packagesXamarin.Android.Support.Compat.25.3.1libMonoAndroid70Xamarin.Android.Support.Compat.dll</HintPath>
    </Reference>
    <Reference Include="Xamarin.Android.Support.Core.UI">
      <HintPath>..packagesXamarin.Android.Support.Core.UI.25.3.1libMonoAndroid70Xamarin.Android.Support.Core.UI.dll</HintPath>
    </Reference>
    <Reference Include="Xamarin.Android.Support.Core.Utils">
      <HintPath>..packagesXamarin.Android.Support.Core.Utils.25.3.1libMonoAndroid70Xamarin.Android.Support.Core.Utils.dll</HintPath>
    </Reference>
    <Reference Include="Xamarin.Android.Support.Media.Compat">
      <HintPath>..packagesXamarin.Android.Support.Media.Compat.25.3.1libMonoAndroid70Xamarin.Android.Support.Media.Compat.dll</HintPath>
    </Reference>
    <Reference Include="Xamarin.Android.Support.Fragment">
      <HintPath>..packagesXamarin.Android.Support.Fragment.25.3.1libMonoAndroid70Xamarin.Android.Support.Fragment.dll</HintPath>
    </Reference>
    <Reference Include="Xamarin.Android.Support.Vector.Drawable">
      <HintPath>..packagesXamarin.Android.Support.Vector.Drawable.25.3.1libMonoAndroid70Xamarin.Android.Support.Vector.Drawable.dll</HintPath>
    </Reference>
    <Reference Include="Xamarin.Android.Support.Animated.Vector.Drawable">
      <HintPath>..packagesXamarin.Android.Support.Animated.Vector.Drawable.25.3.1libMonoAndroid70Xamarin.Android.Support.Animated.Vector.Drawable.dll</HintPath>
    </Reference>
    <Reference Include="Xamarin.Android.Support.v7.AppCompat">
      <HintPath>..packagesXamarin.Android.Support.v7.AppCompat.25.3.1libMonoAndroid70Xamarin.Android.Support.v7.AppCompat.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="MainActivity.cs" />
    <Compile Include="ResourcesResource.designer.cs" />
    <Compile Include="PropertiesAssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <None Include="ResourcesAboutResources.txt" />
    <None Include="PropertiesAndroidManifest.xml" />
    <None Include="AssetsAboutAssets.txt" />
    <None Include="packages.config" />
  </ItemGroup>
  <ItemGroup>
    <AndroidResource Include="ResourceslayoutMain.axml" />
    <AndroidResource Include="ResourcesvaluesStrings.xml" />
    <AndroidResource Include="Resourcesmipmap-hdpiIcon.png" />
    <AndroidResource Include="Resourcesmipmap-mdpiIcon.png" />
    <AndroidResource Include="Resourcesmipmap-xhdpiIcon.png" />
    <AndroidResource Include="Resourcesmipmap-xxhdpiIcon.png" />
    <AndroidResource Include="Resourcesmipmap-xxxhdpiIcon.png" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="Resourcesdrawable" />
  </ItemGroup>
  <ItemGroup>
  </ItemGroup>
  <ItemGroup>

  </ItemGroup>
  <ItemGroup>
    <AndroidAsset Include="AssetsParent" />
    <AndroidAsset Include="AssetsParentChild" />
  </ItemGroup>
  <Import Project="$(MSBuildExtensionsPath)XamarinAndroidXamarin.Android.CSharp.targets" />
  <Import Project="..packagesXamarin.Build.Download.0.4.3uildXamarin.Build.Download.targets" Condition="Exists('..packagesXamarin.Build.Download.0.4.3uildXamarin.Build.Download.targets')" />
  <Import Project="..packagesXamarin.Android.Support.Annotations.25.3.1uildMonoAndroid70Xamarin.Android.Support.Annotations.targets" Condition="Exists('..packagesXamarin.Android.Support.Annotations.25.3.1uildMonoAndroid70Xamarin.Android.Support.Annotations.targets')" />
  <Import Project="..packagesXamarin.Android.Support.Compat.25.3.1uildMonoAndroid70Xamarin.Android.Support.Compat.targets" Condition="Exists('..packagesXamarin.Android.Support.Compat.25.3.1uildMonoAndroid70Xamarin.Android.Support.Compat.targets')" />
  <Import Project="..packagesXamarin.Android.Support.Core.UI.25.3.1uildMonoAndroid70Xamarin.Android.Support.Core.UI.targets" Condition="Exists('..packagesXamarin.Android.Support.Core.UI.25.3.1uildMonoAndroid70Xamarin.Android.Support.Core.UI.targets')" />
  <Import Project="..packagesXamarin.Android.Support.Core.Utils.25.3.1uildMonoAndroid70Xamarin.Android.Support.Core.Utils.targets" Condition="Exists('..packagesXamarin.Android.Support.Core.Utils.25.3.1uildMonoAndroid70Xamarin.Android.Support.Core.Utils.targets')" />
  <Import Project="..packagesXamarin.Android.Support.Media.Compat.25.3.1uildMonoAndroid70Xamarin.Android.Support.Media.Compat.targets" Condition="Exists('..packagesXamarin.Android.Support.Media.Compat.25.3.1uildMonoAndroid70Xamarin.Android.Support.Media.Compat.targets')" />
  <Import Project="..packagesXamarin.Android.Support.Fragment.25.3.1uildMonoAndroid70Xamarin.Android.Support.Fragment.targets" Condition="Exists('..packagesXamarin.Android.Support.Fragment.25.3.1uildMonoAndroid70Xamarin.Android.Support.Fragment.targets')" />
  <Import Project="..packagesXamarin.Android.Support.Vector.Drawable.25.3.1uildMonoAndroid70Xamarin.Android.Support.Vector.Drawable.targets" Condition="Exists('..packagesXamarin.Android.Support.Vector.Drawable.25.3.1uildMonoAndroid70Xamarin.Android.Support.Vector.Drawable.targets')" />
  <Import Project="..packagesXamarin.Android.Support.Animated.Vector.Drawable.25.3.1uildMonoAndroid70Xamarin.Android.Support.Animated.Vector.Drawable.targets" Condition="Exists('..packagesXamarin.Android.Support.Animated.Vector.Drawable.25.3.1uildMonoAndroid70Xamarin.Android.Support.Animated.Vector.Drawable.targets')" />
  <Import Project="..packagesXamarin.Android.Support.v7.AppCompat.25.3.1uildMonoAndroid70Xamarin.Android.Support.v7.AppCompat.targets" Condition="Exists('..packagesXamarin.Android.Support.v7.AppCompat.25.3.1uildMonoAndroid70Xamarin.Android.Support.v7.AppCompat.targets')" />
</Project>
答案

“复制”任务不支持复制目录。

我在我的MacOS上重现了你的问题,并找到了修复程序。添加子目录时,csproj文件添加了一个导致此错误的项目。编辑csproj文件并删除引用子目录的行将解决此问题。

Solution :

我的.csproj文件:

<ItemGroup>   
    <AndroidAsset Include="AssetsNew Folderhi.txt">
        <Generator>RazorTemplatePreprocessor</Generator>
        <LastGenOutput>hi.cs</LastGenOutput>
    </AndroidAsset>    
    <AndroidAsset Include="AssetsNew Folder1" /> 
</ItemGroup>

删除引用子目录的第一个AndroidAsset:

enter image description here

以上是关于在Xamarin Android项目中的android Assets中添加文件夹会引发Build Error的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法使用 Xamarin.Forms PCL 项目中的 Devexpress.Xamarin.Android.Charts

Xamarin Android Emulator Manager 不显示所有平台

构建不成功:Xamarin.Forms 中的 Android 项目出错

如何从xamarin表单应用程序中的PCL项目访问android原生布局文件?

如何停止 Xamarin Android StackView 元素中的项目重叠?

如何在xamarin native android中的listview中为项目着色