23

我一直在尝试部署我的 WPF 应用程序,我使用安装向导创建了一个安装项目。我添加的唯一项目输出是 Primary。构建此程序并安装程序后,只要我单击桌面上的 exe,我就会弹出一个弹出窗口,上面写着“'我的程序'已停止工作”,所以我单击调试程序,我看到了

PresentationFramework.dll 中出现“System.Windows.Markup.XamlParseException”类型的未处理异常

附加信息:“设置 connectionId 引发异常。” 行号“10”和行位置“9”。

这个例外并没有为我指明要解决什么的任何方向。我的应用程序中的任何地方都没有“connectionId”。

由于我的系统托盘的 NotifyIcon,我之前遇到过 XAMLParseException,但通过将图标添加到我的 exe 路径中,我已经解决了这个问题。我认为这可能是问题所在,因此我将图标与所有其他项目输出一起添加到了我的设置项目中。还是行不通。

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

4

10 回答 10

32

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

通常,对于引用的程序集,将 Copy Local 设置为 true 就足够了,但我遇到过一些引用本身引用程序集的情况,因此也有必要显式添加这些引用。

更新:

@BENN1TH 的重要补充。

如果您想查看需要哪些程序集:

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

try

{
  InitializeComponent();
}
catch ( Exception ex )
{
  // Log error (including InnerExceptions!)
  // Handle exception
}
于 2011-01-06T13:56:36.873 回答
9

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

于 2012-03-30T10:10:05.350 回答
3

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

于 2012-07-09T16:29:08.707 回答
2

如果在调试器中遇到此异常,请检查异常的 InnerException 成员。它可能会提示您缺少哪个程序集。

于 2013-04-09T11:20:33.380 回答
2

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

try

{
  InitializeComponent();
}
catch ( Exception ex )
{
  // Log error (including InnerExceptions!)
  // Handle exception
}
于 2015-04-19T12:32:45.543 回答
1

我刚刚花了 4 个小时来解决这个问题。我的最终与 xaml 无关!原来这是 MainWindow 初始化后面的代码中的一个小错误。

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

于 2013-05-27T22:20:12.337 回答
0

清理和重建项目对我来说没有效果。

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

于 2015-03-23T03:49:17.227 回答
0

我有这个问题。此问题是由于 Microsoft.Expression.Drawing.dll 造成的,请下载 dll 并添加参考。

于 2015-04-15T05:59:30.350 回答
0

我在使用在应用程序中运行的多个 dll 时遇到了这个问题,并且这些 dll 加载了相同依赖项的不同版本。

我们通常在发布构建期间合并 dll 以防止此问题,但如果我们在开发周期中测试多于一组未合并的 dll,我们会看到它。

解决方案是只测试一组未合并的 dll,对未测试的其他 dll 使用合并的发布版本,或者确保依赖的 dll 对于两组都是相同的版本。

于 2017-01-24T22:50:20.457 回答
0

我通过删除Sign the assembly解决了这个问题,这里:

在此处输入图像描述

于 2018-08-27T06:15:51.827 回答