如何修复Xamarin表单构建错误:“无法为类创建JavaTypeInfo”

时间:2019-09-18 13:46:44

标签: c# xamarin xamarin.forms

在构建时,编译器将引发以下错误:

错误:-

  

严重性代码描述项目文件行抑制状态   错误无法为类创建JavaTypeInfo:   Android.Support.V4.View.Accessibility.AccessibilityManagerCompat / IAccessibilityStateChangeListenerImplementor   由于System.IO.DirectoryNotFoundException:无法找到一部分   路径   'C:\ Users \ sHaRjAs \ source \ repos \ FormsDatePickerFocusSample \ FormsDatePickerFocusSample \ FormsDatePickerFocusSample.Android \ obj \ Debug \ 90 \ android \ src \ mono \ android \ support \ v4 \ view \ accessibility \ AccessibilityManagerCompat_AccessibilityStateChangeListener。   在System.IO .__ Error.WinIOError(Int32 errorCode,可能是StringFullPath)   在System.IO.FileStream.Init(字符串路径,FileMode模式,FileAccess   访问,Int32权限,布尔useRights,FileShare共享,Int32   bufferSize,FileOptions选项,SECURITY_ATTRIBUTES secAttrs,字符串   MSGPATH,布尔bFromProxy,布尔useLongPath,布尔checkHost)
  在System.IO.FileStream..ctor(字符串路径,FileMode模式,FileAccess   访问,FileShare共享,Int32 bufferSize)位于   Xamarin.Android.Tools.Files.CopyIfStreamChanged(流流,字符串   目的地)   Xamarin.Android.Tasks.Generator.CreateJavaSources(TaskLoggingHelper   日志,IEnumerable`1 javaTypes,字符串outputPath,字符串   applicationJavaClass,字符串androidSdkPlatform,布尔   useSharedRuntime,布尔值generateOnCreateOverrides,布尔值   hasExportReference)

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"
             xmlns:local="clr-namespace:FormsDatePickerFocusSample"
             x:Class="FormsDatePickerFocusSample.MainPage">

    <StackLayout VerticalOptions="CenterAndExpand"
                     HorizontalOptions="CenterAndExpand"
                     BackgroundColor="White">

        <Button x:Name="MyButton"
                    Text="Show DatePicker"
                    Clicked="OnMyButtonClicked"/>

        <DatePicker x:Name="MyDatePicker"
                        IsVisible="False"/>

    </StackLayout>

</ContentPage>

c#:-

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;

namespace FormsDatePickerFocusSample
{
// Learn more about making custom code visible in the Xamarin.Forms 
previewer
// by visiting https://aka.ms/xamarinforms-previewer
[DesignTimeVisible(false)]
public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
    }
    private void OnMyButtonClicked(object sender, EventArgs e)
    {
        Device.BeginInvokeOnMainThread(() =>
        {
            if (MyDatePicker.IsFocused)
                MyDatePicker.Unfocus();

            MyDatePicker.Focus();
        });
    }
    }
}

1 个答案:

答案 0 :(得分:0)

刚才有一个类似的错误。我发现它与我的VS解决方案名称联系在一起,具有描述性和长久性

WebApp_ReportGenerator_Framework_Dink_Oxy

如果我创建的另一个项目的解决方案和项目名称(TestProj)较短,则android项目的构建没有错误。

@sHaRjAs:
我猜有问题的Java文件的路径太长(请参阅错误描述),因为您的项目名称太长。除了项目重命名以外,还有其他解决方案可以解决此问题:Solutions here和此处oficial

PS。如果是xamarin形式,则使用

<PropertyGroup> <IntermediateOutputPath>C:\Projects\MyApp</IntermediateOutputPath> </PropertyGroup>

解决方案,请注意,上方路径中的“ MyApp”文件夹是包含所有表单项目的文件夹:Android,UWP,IO和标准API项目。我认为这在文件中并不清楚。

例如,如果您将IntermediateOutputPath属性放入android项目的路径,则Visual Studio会锁定,并且需要“ endTasked”。