【问题标题】:UWP Xaml Intellisense from Nuget (Visual studio 2017)来自 Nuget 的 UWP Xaml Intellisense(Visual Studio 2017)
【发布时间】:2017-10-23 15:29:59
【问题描述】:

我很难让 XAML 智能感知与打包在 Nuget 中的程序集一起工作。

我创建了一个 nuget,其中包含一个带有一堆资源字典的 dll。我已将所有 .dll、.pdb、.pri、.xaml 和 .xr.xml 文件包含在 nuget 中。

在我的消费应用程序中,我尝试如下使用这些资源字典:

<App.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="ms-appx:///StyleTest/Brushes.xaml"></ResourceDictionary>
            <ResourceDictionary Source="ms-appx:///StyleTest/Spacings.xaml"></ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</App.Resources>

样式在运行时解析,但在设计时我似乎无法为它们获得智能感知(即使设计师显示了正确的颜色)注意波浪线:

我还尝试在资源项目中为我的样式添加代码,并像这样使用:

<App.Resources>
<ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
        <Styles:Brushes/>
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

但结果相同。

有没有人成功地为 VS2017 中 Nugets 中打包的资源字典启用 XAML 智能感知?

【问题讨论】:

  • 您是否尝试在解决方案资源管理器中将 XAML 文件作为内容类型为 xaml 的文件打开? (右键单击 xaml 文件并选择 Open With... 在弹出窗口中选择“XAML Designer with Encoding”并单击 OK。)
  • 嗨@Leo-MSFT!不幸的是,用编码打开它没有任何区别。
  • 好消息和坏消息。当我禁用 resharper 时,错误曲线消失了,但我仍然没有自动完成智能感知工作。
  • 如果直接引用dll项目而不是nuget会出现什么结果?对于自动完成智能感知,您能否检查注册表的值:“HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\15.0\Text Editor\XAML\Auto List Members”是否为“1”?

标签: visual-studio xaml uwp nuget uwp-xaml


【解决方案1】:

我们的资源 IntelliSense 当前基于设计器,因此如果设计器能够正确解析资源,那么 IntelliSense 也应该能够显示它。让我们尝试一些事情:

  1. Resharper - 尝试完全禁用它,甚至卸载它(至少暂时如此)。
  2. 完成 - 当插入符号位于编辑器的资源中时按 Ctrl+j 会发生什么?那么你得到完成列表了吗?
  3. 当您将资源更改为其他资源时,设计器会更新吗?

如果这些都不起作用,您是否可以与我们分享一个复制项目?您可以在此处发布共享链接或使用 VS 中的发送反馈工具创建反馈票(提及我的名字以便我可以轻松找到它)。

【讨论】:

  • Marco - 感谢您的回复! 1) Done resharper 消失了,问题仍然存在 2) CTRL+J 调出完成列表,但列表未显示我的 nuget 包中包含的资源 3) 是的,设计器似乎总是按预期运行(应用样式包含在我的nuget中)我在这里放了一个repro项目:github.com/jhorst11/xamlrepro
猜你喜欢
  • 2018-04-12
  • 2018-08-29
  • 1970-01-01
  • 2018-09-09
  • 1970-01-01
  • 1970-01-01
  • 2017-07-05
  • 2020-02-12
  • 1970-01-01
相关资源
最近更新 更多