所以我有3个WPF应用程序功能齐全,可以在Visual Studio中使用调试器运行。但是,如果没有调试器(也就是.exe什么都不做),三个中的两个将无法运行。它不会崩溃或给我错误它只给我一秒钟加载轮然后什么也没有。我不明白为什么它可以与调试器一起运行良好,并且在没有它的情况下运行时根本不运行。我已经尝试了调试和发布版本,但没有任何区别。我已经尝试重新启动visual studio和我的计算机以及清理和重建解决方案。我提到这个应用程序运行正常,因为它让我相信我的视觉工作室工作正常。我正在使用Visual Studio 2013。
我不知道要显示哪些代码段,因为我不知道是什么导致了这个问题。如果您希望看到某些功能/文件在评论中告诉我,如果可以,我会将它们添加到帖子中。
你知道是什么导致这种情况发生吗?我需要采取哪些步骤来运行.vshost.exe运行调试器的方式运行我的.exe文件?
编辑:应用程序确实抛出了我在事件日志中发现的错误。虽然我仍然不确定导致错误的原因 这是错误:
Application: OrderFinderTool.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Windows.Markup.XamlParseException
Stack:
at System.Windows.Markup.WpfXamlLoader.Load(System.Xaml.XamlReader, System.Xaml.IXamlObjectWriterFactory, Boolean, System.Object, System.Xaml.XamlObjectWriterSettings, System.Uri)
at System.Windows.Markup.WpfXamlLoader.LoadBaml(System.Xaml.XamlReader, Boolean, System.Object, System.Xaml.Permissions.XamlAccessLevel, System.Uri)
at System.Windows.Markup.XamlReader.LoadBaml(System.IO.Stream, System.Windows.Markup.ParserContext, System.Object, Boolean)
at System.Windows.Application.LoadComponent(System.Object, System.Uri)
at SupportWizard.App.InitializeComponent()
at SupportWizard.App.Main()
编辑2: 我的同事运行了.exe并得到了一个更详细的错误消息:
Application: OrderFinderTool.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.FileNotFoundException
at System.Reflection.RuntimeAssembly._nLoad(System.Reflection.AssemblyName, System.String, System.Security.Policy.Evidence, System.Reflection.RuntimeAssembly, System.Threading.StackCrawlMark ByRef, IntPtr, Boolean, Boolean, Boolean)
at System.Reflection.RuntimeAssembly.nLoad(System.Reflection.AssemblyName, System.String, System.Security.Policy.Evidence, System.Reflection.RuntimeAssembly, System.Threading.StackCrawlMark ByRef, IntPtr, Boolean, Boolean, Boolean)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(System.Reflection.AssemblyName, System.Security.Policy.Evidence, System.Reflection.RuntimeAssembly, System.Threading.StackCrawlMark ByRef, IntPtr, Boolean, Boolean, Boolean)
at System.Reflection.Assembly.Load(System.Reflection.AssemblyName)
at System.Windows.Navigation.BaseUriHelper.GetLoadedAssembly(System.String, System.String, System.String)
at MS.Internal.AppModel.ResourceContainer.GetResourceManagerWrapper(System.Uri, System.String ByRef, Boolean ByRef)
at MS.Internal.AppModel.ResourceContainer.GetPartCore(System.Uri)
at System.IO.Packaging.Package.GetPartHelper(System.Uri)
at System.IO.Packaging.Package.GetPart(System.Uri)
at System.IO.Packaging.PackWebResponse+CachedResponse.GetResponseStream()
at System.IO.Packaging.PackWebResponse.GetResponseStream()
at System.IO.Packaging.PackWebResponse.get_ContentType()
at MS.Internal.WpfWebRequestHelper.GetContentType(System.Net.WebResponse)
at MS.Internal.WpfWebRequestHelper.GetResponseStream(System.Net.WebRequest, MS.Internal.ContentType ByRef)
at System.Windows.ResourceDictionary.set_Source(System.Uri)
at System.Windows.Baml2006.WpfSharedBamlSchemaContext+<>c.<Create_BamlProperty_ResourceDictionary_Source>b__342_0(System.Object, System.Object)
at System.Windows.Baml2006.WpfKnownMemberInvoker.SetValue(System.Object, System.Object)
at MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(System.Xaml.XamlMember, System.Object, System.Object)
at MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(System.Object, System.Xaml.XamlMember, System.Object)
Exception Info: System.Windows.Markup.XamlParseException
at System.Windows.Markup.WpfXamlLoader.Load(System.Xaml.XamlReader, System.Xaml.IXamlObjectWriterFactory, Boolean, System.Object, System.Xaml.XamlObjectWriterSettings, System.Uri)
at System.Windows.Markup.WpfXamlLoader.LoadBaml(System.Xaml.XamlReader, Boolean, System.Object, System.Xaml.Permissions.XamlAccessLevel, System.Uri)
at System.Windows.Markup.XamlReader.LoadBaml(System.IO.Stream, System.Windows.Markup.ParserContext, System.Object, Boolean)
at System.Windows.Application.LoadComponent(System.Object, System.Uri)
at OrderFinderTool.App.InitializeComponent()
at OrderFinderTool.App.Main()
编辑3: 感谢用户Jay T的帮助,我发现在使用调试器运行时正在加载aero程序集,但由于我在Windows 8计算机上运行并且切换到新的aero2程序集,所以并非没有它。删除程序集及其引用允许.exe运行而不会崩溃
答案 0 :(得分:2)
要开始缩小问题的原因,您可以放入应用程序级异常处理程序并使用异常信息弹出MessageBox或将其写入文件。在App.xaml文件中,为DispatcherUnhandledExceptption添加处理程序:
<Application x:Class="YourApp"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml"
DispatcherUnhandledException="Application_DispatcherUnhandledException">
</Application>
然后在App.xaml.cs中,您可以处理事件并访问未处理的异常:
private void Application_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
{
var exception = e.Exception;
}
在该函数中,您可以在MessageBox中显示异常消息,将其写出并使用StreamWriter等将堆栈跟踪到文本文件。您不必在调试模式下运行应用程序,因此您和#39;能够看到导致该环境出现问题的原因。如果您需要更多帮助来解决问题,请随意发布异常信息。
答案 1 :(得分:0)
就我而言,我引用了PresentationFramework.Aero
。所以要修复我为PresentationFramework.Aero
和PresentationFramework
复制本地为真的错误。它之后就可以了。