2014-10-27 25 views
1

我使用.NET 4.0 Win7 32位下的Ribbon控件库在Visual Studio 2012(升级4)下创建了一个WPF应用程序(c#/ XAML)。 它工作正常,但我不能让它在Win XP 32位主机下工作。如何使用功能区控件库部署WPF应用程序?

我安装: - .NET 3.5 SP1 - .NET 4.0 - 丝带WPF,发现here(同样是安装在我当然做的应用上机)

但它失败当我添加功能区到应用程序。 我试图手动添加RibbonControlsLibrary.dll,但没有更多的成功。

这里窥探的日志:

Message: Could not load file or assembly 'System.Windows.Controls.Ribbon, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified. 
Stacktrace: 
    at System.Windows.Markup.XamlReader.RewrapException(Exception e, IXamlLineInfo lineInfo, Uri baseUri) 
    at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri) 
    at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri) 
    at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream) 
    at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator) 
    at AppliErgos.MainWindow.InitializeComponent() 
    at AppliErgos.MainWindow..ctor() 
    at AppliErgos.LogWindow.Button_Click(Object sender, RoutedEventArgs e) 
    at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) 
    at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) 
    at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) 
    at System.Windows.UIElement.RaiseEvent(RoutedEventArgs e) 
    at System.Windows.Controls.Primitives.ButtonBase.OnClick() 
    at System.Windows.Controls.Button.OnClick() 
    at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e) 
    at System.Windows.UIElement.OnMouseLeftButtonUpThunk(Object sender, MouseButtonEventArgs e) 
    at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) 
    at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) 
    at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) 
    at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) 
    at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent) 
    at System.Windows.UIElement.OnMouseUpThunk(Object sender, MouseButtonEventArgs e) 
    at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) 
    at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) 
    at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) 
    at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) 
    at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) 
    at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args) 
    at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted) 
    at System.Windows.Input.InputManager.ProcessStagingArea() 
    at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input) 
    at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport) 
    at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel) 
    at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled) 
    at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) 
    at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) 
    at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) 
    at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) 
    at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) 


InnerException: 

Message: Could not load file or assembly 'System.Windows.Controls.Ribbon, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified. 
Stacktrace: 
    at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) 
    at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) 
    at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks) 
    at System.Reflection.Assembly.Load(AssemblyName assemblyRef) 
    at System.Windows.Baml2006.Baml2006SchemaContext.ResolveAssembly(BamlAssembly bamlAssembly) 
    at System.Windows.Baml2006.Baml2006SchemaContext.ResolveBamlTypeToType(BamlType bamlType) 
    at System.Windows.Baml2006.Baml2006SchemaContext.ResolveBamlType(BamlType bamlType, Int16 typeId) 
    at System.Windows.Baml2006.Baml2006SchemaContext.GetXamlType(Int16 typeId) 
    at System.Windows.Baml2006.Baml2006Reader.Process_ElementStart() 
    at System.Windows.Baml2006.Baml2006Reader.Process_OneBamlRecord() 
    at System.Windows.Baml2006.Baml2006Reader.Process_BamlRecords() 
    at System.Windows.Baml2006.Baml2006Reader.Read() 
    at System.Windows.Markup.WpfXamlLoader.TransformNodes(XamlReader xamlReader, XamlObjectWriter xamlWriter, Boolean onlyLoadOneNode, Boolean skipJournaledProperties, Boolean shouldPassLineNumberInfo, IXamlLineInfo xamlLineInfo, IXamlLineInfoConsumer xamlLineInfoConsumer, XamlContextStack`1 stack, IStyleConnector styleConnector) 
    at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri) 

我错过了什么?

回答

0

问题解决了! 系统 .Windows.Controls.Ribbon似乎来自.NET4.0 ...但只有安装了.NET4.5才能安装!!!?!?!?!? 我们只需要一点微软 .Windows.Controls.Ribbon 怪异: - \

0

您可以从SysInternals的“Dependency walker”(depend.exe)实用程序开始。经常有间接引用(例如,您的应用程序 - >功能区DLL - >其他一些未命名的DLL),这些引用不会按名称报告,但会阻止应用程序正常运行。 Dependency Walker(或其他类似的工具)会在整个使用过的模块树上留下更多的光线(仍然可能有误报,请注意)

+0

很好的工具。我已经安装并运行它。它告诉我2个DLL丢失(ieshims.dll和wer.dll),但我读过[这里](http://stackoverflow.com/questions/2465111/dependency-walker-reports-ieshims-dll-and- wer-dll-missing)这些DLL在WinXP上无用,它们的检测可能会阻止Dependency Walker完成树...: - \ – olivier 2014-10-27 16:20:03

+0

我使它在ribboncontrolslibrary.dll上直接运行,其结果与整个程序! – olivier 2014-10-27 16:35:27

+0

嗯,我试图安装IE7,以便这些DLL不会停止“Dependency Walker”的树生成...但它在另一个DLL(dwmapi.dll)上失败并且第一个线索暗示...卸载IE7。 ..大声笑 – olivier 2014-10-28 09:25:30

相关问题