部署WPF项目后出现XamlParseException

时间:2011-01-06 13:53:27

标签: wpf deployment xamlparseexception

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

  

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

     

其他信息:'设置connectionId引发异常。'行号“10”和行位置“9”。

此异常并未指明我要解决的问题。我的应用中没有“connectionId”。

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

我知道这是一个模糊的错误,但任何帮助都会受到赞赏,我的应用程序将无法运行。谢谢!

10 个答案:

答案 0 :(得分:31)

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

通常,对于引用的程序集,将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
}

答案 1 :(得分:9)

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

答案 2 :(得分:3)

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

答案 3 :(得分:2)

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

答案 4 :(得分:2)

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

try

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

答案 5 :(得分:1)

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

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

答案 6 :(得分:0)

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

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

答案 7 :(得分:0)

我遇到了这个问题。出现此问题的原因是Microsoft.Expression.Drawing.dll请下载dll并添加引用。

答案 8 :(得分:0)

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

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

它只测试一组未合并的dll的解决方案,使用合并的发行版本来测试未经测试的其他dll,或确保两个集合的相关dll版本相同。

答案 9 :(得分:0)

我通过在此处删除在程序集上签名来解决了这个问题:

enter image description here