【问题标题】:The 'clr-namespace' URI refers to a namespace that is not included in the assembly“clr-namespace” URI 指的是程序集中未包含的命名空间
【发布时间】:2011-03-26 10:52:53
【问题描述】:

我试图在我的 XAML 中包含一些转换值的类。但是,我在编译时收到以下错误:

未定义的 CLR 命名空间。 “clr-namespace” URI 引用了未包含在程序集中的命名空间“View.Summary.Converters”。(View\View)

还有它出错的 XAML:

xmlns:c="clr-namespace:View.Summary.Converters"

另外,这是我的转换类/命名空间的大纲:

namespace View.Summary.Converters
{
    class CollapsedIfNegative : IValueConverter { }

    class VisibleIfNegative : IValueConverter { }

    class ErrorCodeToString : IValueConverter { }
}

我不得不删除代码的核心,因为我正在从事的项目是高度机密的。

【问题讨论】:

    标签: c# .net wpf xaml converter


    【解决方案1】:

    重建解决方案,错误就会消失。

    【讨论】:

    • 这似乎非常简单......但我已经为此苦苦挣扎了一段时间。谢谢!
    • 我就是有这个问题。重建并不能解决问题。
    • 这行得通的事实有点可怕。但是谢谢,都一样!
    【解决方案2】:

    我刚刚通过将目标从 x64 更改为 x86 解决了这个问题。 显然 Visual Studio 是 32 位进程,它无法加载 64 位程序集,如果您的程序集面向 x64 平台并且您添加了一些自定义控件,则 Visual Studio 无法加载它并抛出此消息。

    【讨论】:

    • 太棒了! :D 找到这样的东西总是很有趣,但是是的,重建为 32 位 dll 确实为我恢复了设计器。非常感谢。
    • AAAAGGgghhhhh... 所以,不是 URI 不在程序集中,他们不能说...嘿,这是一个 64 位程序集,我们无法通过 32 位加载用户开发界面......那太容易了。所以,当我想在我的 64 位最终项目中查看任何东西的设计器时,我需要更改为 32 位并且一切都很好,然后切换回 64 以进行最终部署。
    • 我觉得现在这应该是一个已解决的问题,因为 32 位正在走向桌面/服务器的渡渡鸟方式,ARM 尚未真正占据主导地位,而 64 位 Windows 上的 32 位应用程序拥有整个 sysWOW64火车残骸要处理。尽管如此,谢谢你,这也解决了设计师的其他问题。
    【解决方案3】:

    如果您引用外部项目,则必须指定在项目引用中出现的程序集:

    xmlns:mdls="clr-namespace:MyProject.Models;assembly=MyProject.Models"
    

    【讨论】:

    • 这个答案应该得到更多关注
    • 这个应该推广;我在 PatientStorageManager.UI.View 中有一个 xaml 视图,我必须从 xmlns:dataHelper="clr-namespace:PatientManagerMD.ResourceCentral.DataHelper" 更改为 xmlns:dataHelper="clr-namespace:PatientManagerMD.ResourceCentral.DataHelper;assembly=PatientManagerMD.ResourceCentral" 并且它起作用了。
    【解决方案4】:

    我知道出了什么问题。尽管 Visual Studio 将此显示为第一个错误,但我的编码确实存在其他错误,导致转换器无法组装。因此,当 VS 去查找程序集时,它并不存在。

    【讨论】:

    • 你有更多关于错误的详细信息吗?
    • 就我而言 - WPF 控件的构造函数因重构而失败。当我使用调试器时,很明显。
    【解决方案5】:

    vs2008 设计器的一些问题

    这样做:

    1. 关闭设计器
    2. 全部重建 (Alt+B+R) 解决方案

    现在不会有任何错误了。

    【讨论】:

    • 这有效,当构建目标变回时,应该是 dll 类型的问题,对于 64 位应用程序,以 64 位开始构建,以防如果您先构建 x86 然后更改为 x64,则导致你这个问题。
    【解决方案6】:

    我能够重现您的问题:

    我在 .NET Framework 4.0 中创建了一个简单的 WF。重命名了 xaml 文件。作为重命名 xaml 文件的一部分,您必须在调用 WorkflowInvoker 对象上的 Invoke 时手动重命名工作流运行时名称。我建立项目。我收到错误“'clr-namespace' URI 引用了程序集中未包含的命名空间 'System'。”

    我是如何解决的:

    我打开项目属性页。由于某种原因,目标框架从 .NET 框架 4.0 切换到 4.0 客户端版本。因此,我选择了 .NET 4.0 并重建了项目。错误不再存在。

    【讨论】:

    • 刚刚也遇到了这个问题,这解决了它:我的程序集设置为客户端配置文件,但引用的是完整配置文件的程序集...
    • 这也是我的问题。主 WPF 应用程序设置为 .Net 4.0 Client Profile,我的控件库是 .Net 4.0。将 WPF 应用程序切换到 .Net 4.0 解决了这个问题。
    【解决方案7】:

    检查您的构建配置是否在当前(活动)构建配置中选择了要构建的项目。

    我只是在摆弄构建架构(从 x86 到 x64)后遇到了这个问题,并且主 wpf 项目已被取消选择。

    【讨论】:

    • 我发生了同样的事情,无法弄清楚我从源代码管理中删除并读取项目后发生了什么。这个答案有效。
    【解决方案8】:

    我在 C# WPF 项目中遇到了这个问题。 它似乎是在您最后一次尝试关闭项目时生成的,在项目期间出现任何类型的错误,甚至在 XAML 中存在问题的相关命名空间中也是如此。

    对此的解决方案是修复所有 .CS 文件(或排除有问题的 XAML/CS 文件)以获得运行版本重新构建并运行。

    我花了将近 3 个小时才确定设计器似乎正在运行的 Debug 版本一定有问题。这就是为什么在许多情况下人们通过 Rebuild 项目解决了这个问题,但如果项目中存在代码错误,问题将无法自行解决,因为 Rebuild 无法完成并且不会替换设计器支持的版本。

    希望这会有所帮助!

    【讨论】:

    • 正如你所说-重建发布版本没有用,但重建调试版本很高兴
    【解决方案9】:

    Visual Studio 不断恢复到奇怪的程序集文件路径。只需删除它所引用的实际参考文件,然后将其添加到项目中

    【讨论】:

      【解决方案10】:

      我有同样的错误。但显然,这只是因为我试图构建的解决方案的路径。 我的路径/目录/文件夹名称包含一些空格。

      【讨论】:

        猜你喜欢
        • 2011-10-31
        • 2013-02-09
        • 1970-01-01
        • 2016-01-17
        • 2014-10-19
        • 2022-07-18
        • 2011-08-01
        • 2022-08-13
        • 2016-11-29
        相关资源
        最近更新 更多