代码之家  ›  专栏  ›  技术社区  ›  Den

在程序集中找不到ms.internal.media命名空间

  •  2
  • Den  · 技术社区  · 15 年前

    我一直在研究一个WPF应用程序。因为我在ExpressionBlend 4中设计了UI,并在Visual Studio 2010中处理了代码隐藏部分,所以我经常从一个工具切换到另一个工具。

    我在现有的网格中添加了一些图像控件,并为它们分配了一些图像。在Blend中,我构建了这个项目并运行它。工作很好。切换到Visual Studio时,出现以下错误:

    未定义的clr命名空间。这个 “clr namespace”uri引用了 命名空间“ms.internal.media”,即 不包括在 装配。C:\Users\Dennis\Documents\Visual公司 导播室 2010年\项目\解决方案名称\项目名称\主窗口.xaml

    当此错误挂起时,无法加载设计器。然而,这个项目是在混合中工作的,我可以看到它在那里很好。

    声明如下(在窗口中):

    <Window
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:MS_Internal_Media="clr-namespace:MS.Internal.Media;assembly=PresentationCore" mc:Ignorable="d" x:Class="projectName.MainWindow"
            Height="272" Width="359" Loaded="Window_Loaded" WindowStyle="ThreeDBorderWindow" ResizeMode="NoResize" Icon="/projectName;component/Images/main.ico"
            Title="Sample Project">
    

    导致此错误的原因是什么?

    1 回复  |  直到 15 年前
        1
  •  1
  •   jameschinnock    15 年前

    在Visual Studio中,这似乎是一个已知的问题(可能是bug太强了,如果它是一个设置或者我遗漏了一些东西,那么我很高兴能够在这个问题上得到纠正,不管怎样….),它仍然在VS2010中发生。

    如果在XAML中删除字符串“clr namespace:”,只需将

    xmlns:MS_Internal_Media="MS.Internal.Media;assembly=PresentationCore"
    

    它编译得很好,您可以重新加载设计器。如果再在中添加一次clr名称空间语法,它将生成OK,但设计器仍然会出错。我相信这一定是Visual Studio本身的一个问题。

    希望这个解决方案至少能帮助您加载设计器并构建项目。

    我认为,在更多地讨论这个问题之后,问题可能在于程序集没有公共类型。查看.NET Reflector中的程序集,它们都是内部类。对于不属于公共类型的所有程序集,都会引发与您进入vs相同的错误。我希望混合界面要么不检查这个,要么处理得更好。