首页 文章

Xamal中的“XamlCTask”任务意外失败

提问于
浏览
7

我目前在构建我的Xamarin.Forms解决方案时遇到了问题 . 我收到 The "XamlCTask" task failed unexpectedly 的错误 . 我试着查看Xamarin日志和Stacktrace,但我可以_2891253这个问题 . 我可以开始寻找任何建议吗?

Logs

<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Warning">0</SubType>
<Level>4</Level>
<TimeCreated SystemTime="2016-10-11T10:45:07.4999078Z" />
<Source Name="Xamarin.VisualStudio.Android.Designer.MonoAndroidDesignerService" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="devenv" ProcessID="19260" ThreadID="1" />
<Channel />
<Computer>XXXXXX</Computer>
</System>
<ApplicationData>An unexpected error occurred trying to initialize Android Designer.</ApplicationData>
</E2ETraceEvent>

Stack Trace

严重级代码说明项目文件行抑制状态错误“XamlCTask”任务意外失败 . System.ArgumentException:已添加具有相同键的项 . 服务器堆栈跟踪:位于System.ThrowHelper.ThrowArgumentException(ExceptionResource资源)的System.Collections.Generic.Dictionary`2.Insert(TKey键,TValue值,布尔加法)位于Xamarin.Forms.Xaml.XamlParser.ParseXamlElementFor(IElementNode节点, Xamarin.Forms.Xaml.XamlParser.ReadNode(XmlReader reader,布尔嵌套)的Xamarin.Forms.Xaml.XamlParser.ParseXamlElementFor(IElementNode节点,XmlReader阅读器)Xamarin.Forms.Xaml.XamlParser.ReadNode(XmlReader阅读器)的XmlReader阅读器,布尔嵌套),位于Xamarin.Forms.Build.Tasks.XamlCTask的Xamarin.Forms.Build.Tasks.XamlCTask.ParseXaml(Stream stream,TypeReference typeReference)的Xamarin.Forms.Xaml.XamlParser.ParseXamlElementFor(IElementNode节点,XmlReader阅读器)系统中的System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md,Object [] args,Object server,Object []和outArgs)中的Xamarin.Forms.Build.Tasks.XamlCTask.Execute()处于.Compile() .Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessa ge(IMessage msg)在[0]处重新抛出异常:在System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData,Int32类型)的System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)处在Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()的Microsoft.Build.Framework.ITask.Execute()中,Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext()XXXXXXX.XXXXXX . XXXXXX

11 回答

  • 0

    也许你有2个Visual Studio实例访问同一个设备 .

  • 0

    在这种情况下删除bin和obj文件夹它似乎像魅力!

  • 0

    tl;博士:

    在失败的页面上禁用 XamlC

    [XamlCompilationAttribute (XamlCompilationOptions.Skip)]
    public partial class MyPageThrowing {}
    

    或在大会一级

    [assembly:XamlCompilationAttribute (XamlCompilationOptions.Skip)]
    

    长篇故事

    抛出相同异常和相同StackTrace的问题已在xamarin.forms的下一个(迄今为止)版本中修复,该版本应为2.3.3-pre3或2.3.4 .

    唯一可以确定的方法是将失败的Xaml页面粘贴到http://bugzilla.xamarin.com上,甚至更好 .

    我真的很鼓励你这样做 . 如果问题尚未解决 . 要么它是你的Xaml中的一个问题,这需要抛出更好的异常,或者它是XamlC中不受支持的情况,这需要修复 .

  • 5

    首先,当xamarin.forms版本与您指向的nuget不兼容时,将引发此问题 . 所以我想告诉你这些步骤并继续 .

    Step1: Update Xamarin.Forms version in PCL and all other projects.
    
    Step2: Check for matching dependencies with nuget package.i.e make sure everywhere the the solution is using the **same** version of the Xamarin.Forms.
    

    希望这会对你有所帮助 .

  • 0

    希望可能对其他人有用,我在问题中显示了同样的错误(...“XamlCTask”任务意外失败.System.ArgumentException:已经添加了具有相同键的项目...),我的问题是由ListViewTemplate引起的,它包含一个DataTemplate,我在其中推出了两个元素,一个Label和一个Picker .

    将标签e Picker分组到DataTemplate内部的一个独特元素Frame中,解决了我的问题 .

  • 0

    我已经解决了这个问题 . 由于我重命名了命名空间,因此我将命名空间别名命名为错误 . 我在别名中使用了点( . ),如 xmlns:sample.pages="clr-namespace:JustAnotherNamespace" . 当我删除点,解决方案能够 Build !

  • 1

    我有同样的问题 . 清理或重启没有帮助 . 现在我尝试了模拟器而不是设备 . 这很有效 . 之后我能够在设备上构建和运行 .

    Edit:

    现在我第二次遇到这个问题了 . 但这里有所不同 . 该应用程序不再编译 . 现在它似乎工作 . 这就是我所做的:

    • 升级到XF 2.3.3.168

    • 为引用的项目升级到XF 2.3.3.168

    • 修复了编译错误(仅在更新后出现)

  • 1

    如果您的Xamarin Forms核心损坏,有时会发生这种情况 . 卸载并重新安装它们 .

  • 0

    我也有这个错误 . 在我的情况下,它原来是一个xaml问题 . 我没有对任何dll或引用做任何最近的更改 . 我刚刚做了一些xaml更改,我突然开始收到此错误 . 我写的这个xaml有引起了这个问题:

    <StackLayout Grid.Row="4" Orientation="Horizontal" HorizontalOptions="Center" >
                <StackLayout.Children>
                    <Label Text="Holes" BackgroundColor="White" VerticalOptions="Center"/>
                    <Entry x:Name="entryHoles" BackgroundColor="White" WidthRequest="100"/>
                </StackLayout.Children>
                <StackLayout.Children>
                    <Label Text="Par" BackgroundColor="White" VerticalOptions="Center"/>
                    <Entry x:Name="entryPar" BackgroundColor="White" WidthRequest="100"/>
                </StackLayout.Children>
            </StackLayout>
    

    应该只有一个StackLayout.Children标记 . 这是我切换到让错误消失的原因:

    <StackLayout Grid.Row="4" Orientation="Horizontal" HorizontalOptions="Center" >
                <StackLayout.Children>
                    <Label Text="Holes" BackgroundColor="White" VerticalOptions="Center"/>
                    <Entry x:Name="entryHoles" BackgroundColor="White" WidthRequest="100"/>
                    <Label Text="Par" BackgroundColor="White" VerticalOptions="Center"/>
                    <Entry x:Name="entryPar" BackgroundColor="White" WidthRequest="100"/>
                </StackLayout.Children>
            </StackLayout>
    

    我敢打赌额外的StackLayout.Children标签会导致这条消息:“已经添加了一个具有相同密钥的项目 . ”如果是这样的话,如果微软可以准确地告诉我们重复的项目是什么的话会很棒 . 我浪费了各种时间来更新NuGet包 .

  • 0

    此错误表示NuGet包的版本和Xamarin.Forms的版本不匹配 . 只需更新项目中的NuGet包,或从包列表中删除Xamarin.Forms,然后重新添加 .

  • 0

    我的应用程序中有35页有一个程序集引用来打开/关闭xaml编译 . 要找到有问题的页面,我必须删除程序集引用并在每个页面上放置以下内容并一次重建一个共享项目,直到找到有问题的页面(确保选择了发布版本) .

    #if (DEBUG != true)
        [XamlCompilation(XamlCompilationOptions.Compile)]
    #endif
    

    一旦找到该页面,它很可能是像上面这么多解决方案一样的xaml问题 . 对我来说,这是因为我不小心在页面上放置了两个资源词典,所以很容易发现,你可能不那么容易 .

相关问题