部署WPF项目后的XamlParseException

问题描述:

我一直在尝试部署我的WPF应用程序,我使用安装向导创建了一个安装项目。我添加的唯一项目输出是Primary。建立这个和安装程序后,只要我点击我的桌面上的EXE我弹出一个说'我的程序'已停止工作“,所以我点击调试程序,我看到部署WPF项目后的XamlParseException

PresentationFramework.dll中发生未处理的异常类型'System.Windows.Markup.XamlParseException'

附加信息:'Set connectionId thrrew an exception。'行号“10”和行位置“9”。

这个例外并没有指出我要解决什么问题。在我的应用程序中没有任何'connectionId'。

我之前遇到了XAMLParseException,因为我的系统托盘中有NotifyIcon,但是通过将图标添加到我的exe文件的路径中来解决了这个问题。我认为这可能是问题所以我添加图标到我的安装项目,以及所有其他项目输出。还是行不通。

我知道这是一个模糊的错误,但任何帮助都将不胜感激,我的应用程序将不会运行。谢谢!

这通常是由于没有将所有依赖项复制到输出中造成的。正如你所说的那样,这个错误信息不是很有帮助,但我会检查你的应用程序是否有可用的所有必要的依赖来解析解析的类型。

正常情况下,将引用程序集的Copy Local设置为true就足够了,但我经历过一些引用本身引用程序集的情况,因此也可能需要显式添加这些引用。

更新:

重要的除了通过@ BENN1TH。

如果你想看到的组装需要什么:

居然也得到了相同类型的问题我曾经发表过,并安装在我的项目(在调试VS2013桌面工作正常,没有错误等)但使用http://geekswithblogs.net/lbugnion/archive/2007/03/14/108728.aspx和wham的建议!已安装的项目正在运行..

try 

{ 
    InitializeComponent(); 
} 
catch (Exception ex) 
{ 
    // Log error (including InnerExceptions!) 
    // Handle exception 
} 
+0

我确信我包含了我在程序集中引用的所有dll。我怎么知道我可能需要哪些其他的? – Drew 2011-01-06 14:29:20

+0

哦,它现在正在工作。我需要参考资料,并确保我的图标位于应用程序的文件夹中。我认为我的问题的一部分是我将图标与项目输出一起添加到构建中。我需要构建,安装,然后在事实之后添加图标。无论如何,非常感谢帮助 – Drew 2011-01-06 14:32:58

+6

当我得到这个异常时,我能够进入调试器,并查看InnerException以查看哪个DLL丢失。 – 2012-02-07 22:14:04

清洗和重建解决方案可能会有所帮助!

+0

重建为我工作,没有这个答案,我可能没有想到它,所以谢谢 – Matt 2012-04-12 15:38:52

我在VS2010中遇到了WPF解决方案的问题。该解决方案包含一个简单的dll和一个用于测试dll的测试项目(设置为启动)。我的dll设置为x86,我的测试项目设置为x64。当我将测试项目更改为x86时,问题已解决。

如果在调试器中发现此异常,请检查异常的InnerException成员。它可能会给你一个关于哪个程序集丢失的提示。

我刚刚花了4个小时试图弄清楚这一点。我最终与xaml无关!原来,这是MainWindow初始化后面的代码中的一个小错误。

如果一切都失败,请检查那里

清理和重建项目对我无效。

你可以尝试删除bin目录然后重建,我通过这种方式解决了我的问题。

我有这个问题。由于Microsoft.Expression.Drawing.dll发生此问题请下载DLL并添加引用。

一旦我发布并安装了我的项目(在调试VS2013桌面,没有错误等工作正常),但使用http://geekswithblogs.net/lbugnion/archive/2007/03/14/108728.aspx和wham中的建议后,得到相同类型的问题!安装项目工作..

try 

{ 
    InitializeComponent(); 
} 
catch (Exception ex) 
{ 
    // Log error (including InnerExceptions!) 
    // Handle exception 
} 

与应用程序内运行多个DLL工作时,我遇到了这一点,这些dll有不同的加载相同的依赖版本。

我们通常在我们的发布版本中合并dll以防止此问题,但是如果我们在开发周期中测试多个未合并的dll,则会看到它。

它的溶液只测试一组未合并的DLL的,使用用于不被测试,或以确保依赖DLL是相同的版本为两组的其他DLL合并发布版本。