Parsing XAML解析异常

Parsing XAML解析异常,parsing,exception,xaml,msbuild,clickonce,Parsing,Exception,Xaml,Msbuild,Clickonce,我有一个简单的XAML页面,当它作为VisualStudio中的任何应用程序的一部分加载时,它可以很好地加载。但是,当我使用ClickOnce部署此应用程序时,会出现以下异常: Type : System.Windows.Markup.XamlParseException, PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 Message : Unable t

我有一个简单的XAML页面,当它作为VisualStudio中的任何应用程序的一部分加载时,它可以很好地加载。但是,当我使用ClickOnce部署此应用程序时,会出现以下异常:

Type : System.Windows.Markup.XamlParseException, PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
    Message :  Unable to cast object of type 'System.Windows.Controls.Grid' to type 'EMS.Controls.Dictionary.StatusBarControl'.  Error at object 'System.Windows.Controls.Grid' in markup file 'EMS.Controls.Dictionary;component/views/statusbarcontrol.xaml'.
Source : PresentationFramework
Help link : 
LineNumber : 0
LinePosition : 0
KeyContext : 
UidContext : 
NameContext : 
BaseUri : pack://application:,,,/EMS.Controls.Dictionary;component/views/statusbarcontrol.xaml
Data : System.Collections.ListDictionaryInternal
TargetSite : Void ThrowException(System.String, System.Exception, Int32, Int32, System.Uri, System.Windows.Markup.XamlObjectIds, System.Windows.Markup.XamlObjectIds, System.Type)
Stack Trace :    at System.Windows.Markup.XamlParseException.ThrowException(String message, Exception innerException, Int32 lineNumber, Int32 linePosition, Uri baseUri, XamlObjectIds currentXamlObjectIds, XamlObjectIds contextXamlObjectIds, Type objectType)
   at System.Windows.Markup.XamlParseException.ThrowException(ParserContext parserContext, Int32 lineNumber, Int32 linePosition, String message, Exception innerException)
   at System.Windows.Markup.BamlRecordReader.ReadRecord(BamlRecord bamlRecord)
   at System.Windows.Markup.BamlRecordReader.Read(Boolean singleRecord)
   at System.Windows.Markup.TreeBuilderBamlTranslator.ParseFragment()
   at System.Windows.Markup.TreeBuilder.Parse()
   at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
   at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
   at EMS.Controls.Dictionary.StatusBarControl.InitializeComponent()
   at EMS.Controls.Dictionary.StatusBarControl..ctor(IDataView content)
   at OCC600.ReportManager.ReportPresenter.ShowQueryView(Object arg, Boolean bringForward, Type selectedDataType)
   at OCC600.ReportManager.ReportPresenter..ctor(IUnityContainer container)
   at OCC600.ReportManager.Module.Initialize()
   at Microsoft.Practices.Composite.Modularity.ModuleLoader.Initialize(ModuleInfo[] moduleInfos)

    Inner Exception
    ---------------
    Type : System.InvalidCastException, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
    Message : Unable to cast object of type 'System.Windows.Controls.Grid' to type 'EMS.Controls.Dictionary.StatusBarControl'.
    Source : EMS.Controls.Dictionary
    Help link : 
    Data : System.Collections.ListDictionaryInternal
    TargetSite : Void System.Windows.Markup.IComponentConnector.Connect(Int32, System.Object)
    Stack Trace :    at EMS.Controls.Dictionary.StatusBarControl.System.Windows.Markup.IComponentConnector.Connect(Int32 connectionId, Object target)
       at System.Windows.Markup.BamlRecordReader.ReadConnectionId(BamlConnectionIdRecord bamlConnectionIdRecord)
       at System.Windows.Markup.BamlRecordReader.ReadRecord(BamlRecord bamlRecord)
XAML页面如下所示:

<cdic:ResultSetControl 
    x:Class="EMS.Controls.Dictionary.StatusBarControl"
    xmlns:dc="clr-namespace:DevComponents.WpfRibbon;assembly=DevComponents.WpfRibbon"  
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"                          
    xmlns:cdic="clr-namespace:EMS.Controls.Dictionary.Primitives"
    xmlns:dicutil="clr-namespace:OCC600.Infrastructure.Dictionary.Utility;assembly=EMS.Infrastructure.Dictionary"
    Loaded="ResultSetControl_Loaded">
    <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="../Resources/Styles.xaml"/>                
            </ResourceDictionary.MergedDictionaries>
            <BooleanToVisibilityConverter x:Key="BooToVisConv"/>
        </ResourceDictionary>
    </UserControl.Resources>
    <Grid Name="panel" >
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="21"/>
        </Grid.RowDefinitions>        
        <StatusBar Name="statusBar" Grid.Row="1">
            <StatusBar.ItemsPanel>
                <ItemsPanelTemplate>
                    <DockPanel LastChildFill="False"/>
                </ItemsPanelTemplate>
            </StatusBar.ItemsPanel>

            <StatusBarItem Margin="10,0, 10, 0">                
                <TextBlock Text="{Binding CountText}" Padding="5,0"/>                
            </StatusBarItem>                       

            <StatusBarItem Margin="10,0">
                <TextBlock Text="{Binding MemoryUsageText}" Padding="5,0"/>
            </StatusBarItem>

            <StatusBarItem Margin="10,0" MaxWidth="400">
                <TextBlock  Text="{Binding StatusReport.Summary}" Padding="5,0" />
            </StatusBarItem>

            <ProgressBar Margin="20,0" Name="progBar" Width="150" Height="13" Visibility="Collapsed" >                
                <ProgressBar.ContextMenu>                   
                    <ContextMenu Name="ctxMenu" ItemsSource="{Binding ActiveWorkItems}" 
                                 Visibility="{Binding Path=ActiveWorkItems.HasItems, Converter={StaticResource BooToVisConv}}">                        
                        <ContextMenu.ItemContainerStyle>
                            <Style TargetType="{x:Type MenuItem}">                                
                                <Setter Property="Template">
                                    <Setter.Value>
                                        <ControlTemplate TargetType="{x:Type MenuItem}">
                                            <StackPanel Height="20" Margin="10,0" Orientation="Horizontal" HorizontalAlignment="Left">
                                                <TextBlock Text="{Binding Path=Name, Mode=OneTime}" 
                                                           Foreground="Black" VerticalAlignment="Center" HorizontalAlignment="Left" />
                                                <ToggleButton  Style="{StaticResource vistaGoldenToggleButtonStyle}"
                                                         Padding="5,0" Content="Cancel" IsChecked="{Binding Cancel}"                                                         
                                                         Margin="10,0,0,0" >                                                    
                                                </ToggleButton>
                                            </StackPanel>                                                                                      
                                        </ControlTemplate>
                                    </Setter.Value>
                                </Setter>
                            </Style>
                        </ContextMenu.ItemContainerStyle>                                                
                    </ContextMenu>
                </ProgressBar.ContextMenu>
            </ProgressBar>

            <StatusBarItem Margin="10,0" MaxWidth="400" HorizontalAlignment="Right">
                <StackPanel Orientation="Horizontal">
                    <TextBlock  Text="Last Update:" Padding="5,0" />
                    <TextBlock  Text="{Binding TimeStamp}" Padding="5,0" />                    
                </StackPanel>                
            </StatusBarItem>


            <!-- TODO:  Put checkmark if all is well, or error if connection failed-->
            <StatusBarItem Style="{DynamicResource {ComponentResourceKey 
                TypeInTargetAssembly=dc:Ribbon, ResourceId=StatusBarItemAlt}}" 
                           DockPanel.Dock="Right" Padding="6,0,32,0" >      

                    <cdic:SplitButton Margin="5,0" Padding="5,2"                             
                            Style="{DynamicResource {ComponentResourceKey 
                        TypeInTargetAssembly={x:Type cdic:SplitButtonResources}, ResourceId=vistaSplitButtonStyle}}" 
                                       Mode="Split">
                        <cdic:SplitButton.ContextMenu>
                            <ContextMenu >
                                <MenuItem Header="Refresh Now" Command="{Binding ToggleConnectivityCmd}"
                                          CommandParameter="false"/>
                                <MenuItem IsCheckable="True" 
                                          IsChecked="{Binding ConnectState, Converter={StaticResource isFailedConverter}}"
                                          CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self},
                                    Path=IsChecked}"
                                          Header="Work Offline" Command="{Binding ToggleConnectivityCmd}"/>
                        </ContextMenu>                            
                        </cdic:SplitButton.ContextMenu>
                    <cdic:SplitButton.Content>
                        <StackPanel Orientation="Horizontal">
                            <Image                             
                                x:Name="img"     
                                Source="{Binding ConnectState, Converter={StaticResource imageConverter}}"
                                Width="16" Height="16" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                            <TextBlock Text="{Binding ConnectState}" Padding="3,0,0,0"/>                            
                        </StackPanel>                        
                    </cdic:SplitButton.Content>
                </cdic:SplitButton>                                        
            </StatusBarItem>            

        </StatusBar>
    </Grid>    
</cdic:ResultSetControl>

这个错误似乎是无中生有的。有什么想法吗


TIA.

我猜参考“EMS.Controls.Dictionary.StatusBarControl”控件是应该安装在用户GAC中的库的一部分。确保您没有丢失应用程序的先决条件。

我遇到了几乎完全相同的问题。有没有人能解决这个问题?你能把
EMS.Controls.Dictionary.StatusBarControl
类的代码发布到后面吗?