C# Visual Studio没有可用的源代码
我在这里真是不知所措,几个小时来一直在努力寻找解决办法。我迷路了。我在上次检查时正在运行的操作中遇到以下异常C# Visual Studio没有可用的源代码,c#,wpf,visual-studio-2010,C#,Wpf,Visual Studio 2010,我在这里真是不知所措,几个小时来一直在努力寻找解决办法。我迷路了。我在上次检查时正在运行的操作中遇到以下异常 “{DependencyProperty.UnsetValue}”不是属性“前台”的有效值。 它不会把我带到错误发生的地方。它把我带到一个页面,上面写着“没有可用的资源”,没有其他内容。我曾尝试通过在不同的位置放置断点来定位错误,但在每次运行期间,它似乎在不同的位置失败。InnerException为空 我看过,还有谷歌的各种文章。我不知道发生了什么,也不知道如何从这里排除故障。Visu
“{DependencyProperty.UnsetValue}”不是属性“前台”的有效值。
它不会把我带到错误发生的地方。它把我带到一个页面,上面写着“没有可用的资源”,没有其他内容。我曾尝试通过在不同的位置放置断点来定位错误,但在每次运行期间,它似乎在不同的位置失败。InnerException为空
我看过,还有谷歌的各种文章。我不知道发生了什么,也不知道如何从这里排除故障。VisualStudio输出似乎没有提供任何更详细的信息,但我会根据请求粘贴它。非常感谢您的帮助。您重建项目了吗?您的PDB文件可能与DLL不匹配,因此VS可能没有加载它们。至于错误本身,很可能是绑定到
前台
属性的错误。我愿意为您提供缺少的资源。如果您执行以下操作:
<Window x:Name="window" x:Class="WpfApplication4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:WpfApplication4"
Title="MainWindow" Height="350" Width="525" >
<Window.Resources>
<Style TargetType="Button">
<Setter Property="Foreground" Value="{StaticResource NoSuchResourceKey}" />
</Style>
</Window.Resources>
<StackPanel>
<Button Content="Click Me" />
</StackPanel>
</Window>
相反,如果我们做了:
<Button Content="Click Me" Foreground="{StaticResource {ComponentResourceKey TypeInTargetAssembly={x:Type FrameworkElement}, ResourceId=NoSuchResourceKey}}" />
然后,您将得到一个不同的异常(XamlParseException),表示:
在“System.Windows.StaticResourceExtension”上提供值时引发异常。“行号“6”和行位置“22”
内部例外情况如下:
找不到名为“TargetType=System.Windows.FrameworkElement ID=NoSuchResourceKey”的资源。资源名称区分大小写
这一切都将我们引向了真正的问题(缺少的资源)。前两个示例没有给出有用的异常的原因是我们没有设置前台
属性。我们正在设置Setter
对象上的Value
属性。因此,当找不到资源时,将使用dependencProperty.UnsetValue
。这对于Setter.Value
属性完全有效
稍后,当样式
应用于按钮
时,我们会得到一个异常,因为此时dependencProperty.UnsetValue
实际上被分配给按钮.前台
属性
为了解决这个问题,我将在您的整个解决方案中搜索Property=“Foreground”
,并查找使用不存在的资源的任何实例
我应该补充一点,在使用
DynamicResource
时不会出现异常,因为在传递给按钮的值中,前台
属性是一个“特殊值”(允许延迟查找)。除非找到资源,否则此“特殊值”不会分配给定的属性。该问题最终成为我使用的资源字典中的错误引用。这是使用DynamicSource的一个好理由吗?静态和动态之间有性能差异吗?@Tyrsius-不,这不是使用DynamicSource的好理由。与StaticResource相比,使用it会带来额外的开销。“特殊值”将被保留,并且可以在运行时重新查询关联的资源。真的,在这种情况下只需要更好的错误报告。@Code裸体+1非常详细的解释。如果尝试将画笔指定给颜色,也会出现此类错误报告。
<Button Content="Click Me" Foreground="{StaticResource NoSuchResourceKey}" />
<Button Content="Click Me" Foreground="{StaticResource {ComponentResourceKey TypeInTargetAssembly={x:Type FrameworkElement}, ResourceId=NoSuchResourceKey}}" />