【发布时间】:2013-06-07 14:53:59
【问题描述】:
我有一个 USB 相机图像的第三方显示控件,在其自己的窗口中设置,使用 XAML 如下:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="ControlWrapperAppWPF.CameraView"
Title="Camera Image" SizeToContent="WidthAndHeight"
xmlns:custom="clr-namespace:TCUSB;assembly=TCC">
<custom:TCC Name="tC" Loaded="tC_Loaded" />
</Window>
在“设计”窗格中,会显示一个System.IO.FileNotFoundException(在单击此处重新加载设计器的链接下方)。错误详情包括:
无法加载文件或程序集 'TCR, Version=2.1.3.0, Culture=neutral, PublicKeyToken=32fe4fab5501c8fe' 或其依赖项之一。
TCC.dll(引用自我的 XAML)使用 TCR.dll,它们各自的依赖关系很多。我不得不将大量 DLL 复制到 \bin\Debug 和 \bin\Release 文件夹中。是否也应该将它们复制到其他地方(或替代)?
TCR.dll 本身实际上是版本 2.1.3.1025,所以这可能是也可能不是问题,但是,我在运行时没有收到此类投诉。项目构建时没有任何警告,当我执行调试或发布构建时,第三方控制窗口工作正常。
对此的任何建议将不胜感激,谢谢!
【问题讨论】:
-
我只能提供一些建议:启动两个 Visual Studio 副本,并从实例
A使用Debug | Attach To Process附加到实例B。然后在B实例中使用有故障的第三方控件打开您的项目并打开出现问题的设计器 - 然后查看实例A是否发现任何异常。您可能需要先转到Debug | Exceptions并在实例A中为“公共语言运行时异常”打开“抛出”。 -
谢谢,马修。这是一个巧妙的技巧,但我似乎无法捕捉到 Designer 错误。当我的应用程序启动时,我确实尝试过
throw new System.IO.FileNotFoundException(),但这仅在实例B中被捕获。我已经为其他异常类型打开了“抛出”,以防万一。有没有更好的方法来故意在实例B中抛出 CLR 异常,以检查我是否正确附加了实例A? -
您可能会创建一个空的默认用户控件并将其添加到实例
B的项目中的表单中,然后更改其构造函数以引发异常,然后打开包含它的表单。 -
(...cont) 即在 IDE 的 Design 窗格中打开表单。
-
感谢您的建议,这项技术一定会派上用场的。
标签: c# wpf visual-studio-2010 wpf-controls