Visual studio 为什么vsshell:VSBrush中的DynamicResources未解析
我制作了一个新的VisualStudio扩展,它带有一个工具窗口,正如微软在这里描述的那样 我尚未对Visual Studio生成的代码进行任何更改,但收到两条警告:Visual studio 为什么vsshell:VSBrush中的DynamicResources未解析,visual-studio,visual-studio-extensions,visual-studio-2019,Visual Studio,Visual Studio Extensions,Visual Studio 2019,我制作了一个新的VisualStudio扩展,它带有一个工具窗口,正如微软在这里描述的那样 我尚未对Visual Studio生成的代码进行任何更改,但收到两条警告: The resource "{x:Static vsshell:VsBrushes.WindowKey}" could not be resolved. The resource "{x:Static vsshell:VsBrushes.WindowTextKey}" could not be resolved.
The resource "{x:Static vsshell:VsBrushes.WindowKey}" could not be resolved.
The resource "{x:Static vsshell:VsBrushes.WindowTextKey}" could not be resolved.
由于以下屏幕截图中显示的两行
这里有一个非常类似的问题
除了这个问题提到了VisualStudio2012。我使用的是Visual Studio 2019,所以在此期间可能会有一些变化
这个问题的答案对我来说并不适用
有人能解释这种行为吗?自动生成的代码应该包含这些警告,这似乎很奇怪
出现警告的原因:
请参阅。工具窗口项使用DynamicResources,因此可以在运行时设置和更改资源
WindowsKey和WindowsTextKey来自,这两种颜色资源在设计器时间内无法访问,而是可以在运行时访问。这就是为什么工具窗口控件在安装.vsix后运行良好,而vs显示两个警告
此外:
如果将DynamicResource更改为StaticResource,则警告将变为错误。模板中的默认值vsshell:vsbrush.WindowKey
只能在运行时访问,因此开发团队默认设置DynamicSource
我认为这是出于设计,警告实际上可以被看作是一条信息:可能是notFoundResource,请小心代码>所以我们可以忽略它
要删除警告,请执行以下操作:
正如我所说,这只是一条消息,告诉我们有可能无法解析资源,因为设计器无法在“设计器时间”中访问资源vsshell:vsbrush.WindowKey
。为什么不将颜色设置为我们在设计控件时可以访问的系统颜色
实际上,我们正在开发一个窗口控件,当然我们可以更改控件的颜色以使其更好。(UI设计?)因此,对于我来说,我将这两个资源更改为SystemResource,可以在设计器时间内访问,然后警告消失了:
Background="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"
Foreground="{DynamicResource {x:Static SystemColors.MenuBarBrushKey}}"