【问题标题】:WPF assembly reference missing - project still building缺少 WPF 程序集参考 - 项目仍在构建中
【发布时间】:2010-08-08 00:35:11
【问题描述】:

我正在尝试在我的解决方案中使用 WPF 的动态数据显示库。我在我的项目中添加了对DynamicDataDisplay.dll 的引用。我还在 .xaml 中添加了一个命名空间,如下所示:xmlns:d3="http://research.microsoft.com/DynamicDataDisplay/1.0"

当我尝试从动态数据显示库添加元素时,Intellisense 没有帮助我。当我在我的 .xaml 中键入这样的内容时:

<d3:ChartPlotter></d3:ChartPlotter>

Visual Studio 会将其标记为错误,并带有如下文本:

The type 'd3:ChartPlotter' was not found. Verify that you are not missing an 
assembly reference and that all referenced assemblies have been built.

但奇怪的是它仍然可以编译。 有人可以告诉我我做错了什么吗?

这是一个编译良好但在设计器中显示错误的示例代码:

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d3="http://research.microsoft.com/DynamicDataDisplay/1.0"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <d3:ChartPlotter></d3:ChartPlotter>
</Grid>

编辑:

我尝试了 Merlyn Morgan-Graham 建议的命名空间声明,但它仍然不起作用。发生另一个错误:

Unable to load the metadata for assembly 'DynamicDataDisplay'.
This assembly may have been downloaded from the web.
See http://go.microsoft.com/fwlink/?LinkId=179545.  The following error was encountered
during load: etc.

似乎需要手动解锁已下载的程序集。这可以在 Windows 文件属性中完成。解除阻塞并重新启动 Visual Studio 后,问题就解决了。


(来源:www.xup.in

【问题讨论】:

  • 您能否提供 XAML 的某些部分来重现该问题?准确了解您的代码是如何工作的可能会帮助某人重现您的问题。另外,检查你引用的类是否是公开的。
  • 我添加了一个代码示例,希望它有助于找到问题。它使用全新的 WPF 项目进行了测试,仅添加了对 DynamicDataDisplay.dll 的引用。
  • 解锁 DLL 也对我有用!几乎需要将其作为另一个答案提交......
  • @mpistrich 你是一个传奇。解锁 DLL 解决了这个问题。谢谢
  • 解锁对我有用...

标签: c# wpf assemblies


【解决方案1】:

这似乎是架构引用,而不是程序集引用。

这样的事情可能会更好:

xmlns:d3="clr-namespace:Microsoft.Research.DynamicDataDisplay;assembly=DynamicDataDisplay"

http://msdn.microsoft.com/en-us/library/ms747086.aspx

编辑

我想我找到了您正在使用的库,因此我将 XAML 命名空间引用更新为我认为对您有用的内容。如果没有,请查看文档,或开始编辑一些代码,并找出 ChartPlotter 类所在的命名空间。

【讨论】:

    【解决方案2】:

    对其他读者的补充一点:如果您的项目构建成功,但在尝试在设计器中加载视图时收到此错误消息,请确保您的程序集是 x86 或任何 CPU,因为 Visual Studio 2010 是 32 位进程并且无法在设计器中加载 x64 程序集。

    【讨论】:

    • 从 x64 更改为 Any CPU 解决了我的本地程序集问题 (mlns:local="clr-namespace:")。
    【解决方案3】:

    在引用动态数据显示库的二进制版本中找到的 DLL 文件时,我遇到了相同的“无法加载元数据”错误。当我下载了库的源版本并自己编译时,问题就解决了。当引用 DynamicDataDisplay_0.3/sln/DynamicDataDisplay/Debug/bin 下的 DLL 时,它工作得很好。

    我认为问题在于 DLL 的某些权限,正如问题末尾已经指出的那样 - 您可以“取消阻止它”,见上文。

    【讨论】:

      【解决方案4】:

      我遇到了类似的问题,我正在按照此处概述的步骤创建第一个示例项目, https://github.com/Microsoft/InteractiveDataDisplay.WPF

      目前适用于,

      • NuGet 包 avostres.InteractiveDataDisplay.WPF v1.0 和
      • NuGet 包 InteractiveDataDisplay.WPF v1.0
      • 我的项目目标框架是.NET 4.6.1 / V.S Pro V15.7.3

      它会构建,但您会遇到运行时错误。由于微软最近的修补,这似乎是一个兼容性问题。使用 NuGet 安装额外的包,

      • System.Reactive.Compatibility V4

      这解决了我的问题。

      我在这里找到了 StephanBartels 在 github 论坛上讨论的修复, https://github.com/louthy/echo-process/issues/19

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-05
        • 2014-02-16
        • 1970-01-01
        相关资源
        最近更新 更多