我收到异常“FileLoadException:混合模式程序集是针对运行时的版本‘v1.1.4322’构建的,如果没有额外的配置信息,就无法在 4.0 运行时中加载”。
搜索互联网我发现很多人在运行时遇到此异常,但似乎我是唯一一个在开始进入 VS2012 中的设计器视图时遇到此异常的人。
设计器只是向我显示了这条消息,在关闭设计器视图并再次启动它之后,我没有收到这条消息,并且设计器显示了我的对话框元素。但现在在 xaml 视图中,我没有任何智能感知支持。
我的应用程序是针对 .NET Framework 4.5 编译的,在 app.config 中我有
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>
但这无济于事。
这发生在我所有使用 DirectX 显示视频控件的对话框中。正如您可以想象的那样,在没有智能感知的情况下在 xaml 中工作是非常令人沮丧的。
那么有人知道如何在设计视图中摆脱这个异常并让智能感知在这些对话框窗口中工作吗?
仅供参考:VS2010 和 .NET 4.0 没有这些问题。
编辑:
我无法显示确切的源代码,因为它是一个非常大的应用程序,我无法在一个小样本中重现这个问题。但这里有一些额外的信息:
对话框如下所示:
<Window x:Class="DesignerTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Controls="clr-namespace:WPFMediaKit.DirectShow.Controls;assembly=WPFMediaKit"
Title="MainWindow" Height="350" Width="525">
<DockPanel>
<ComboBox DockPanel.Dock="Bottom" x:Name="videoCapDevices"
ItemsSource="{Binding Source={x:Static Controls:MultimediaUtil.VideoInputDevices}}"
DisplayMemberPath="Name"
Foreground="Black"
FontSize="20"
VerticalAlignment="Top"
Margin="0, 30, 0,0" />
<Controls:VideoCaptureElement DesiredPixelWidth="320"
DesiredPixelHeight="240"
FPS="30"
VideoCaptureDevice="{Binding Path=SelectedItem, ElementName=videoCapDevices}"
x:Name="videoElement" Stretch="Fill" />
</DockPanel>
我正在使用开源项目 WPFMediaKit 和 DirectShowLib-2008 并为 x86 cpu 编译。DirectShowLib、WPFMediaKit和主应用程序是强名称签名的。