无法在程序集中找到MS.Internal.Media命名空间

3
我一直在开发一个WPF应用程序。由于我使用Expression Blend 4设计UI,并在Visual Studio 2010中处理代码后端,因此我经常从一个工具切换到另一个工具。
我在现有的Grid中添加了一些Image控件,并将一些图像分配给它们。在Blend中,我构建了项目并运行它。一切都很好。但是,当我切换到Visual Studio时,我遇到了这个错误:
未定义的CLR命名空间。'clr-namespace' URI引用了一个未包含在程序集中的命名空间 'MS.Internal.Media'。C:\Users\Dennis\Documents\Visual Studio2010 \ Projects \ solutionName \ projectName \ MainWindow.xaml
由于出现错误,该设计器无法加载。但是,在Blend中,该项目正在工作,我可以看到它。
声明如下(在窗口中):
<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个回答

2

看起来这是一个已知的问题(也许“bug”这个词太过强烈,如果这是一个设置或者我漏掉了什么东西,那么很高兴在这一点上得到纠正。总之……)在Visual Studio中 - 在VS2010中仍然存在。

如果您在XAML中删除字符串“clr-namespace:”,只留下

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

如果您只是编译,那么可以正常进行并重新加载设计师。如果您再次添加clr-namespace语法,则可以成功构建,但设计师仍然会出错。我认为这一定是Visual Studio本身的问题。

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

经过进一步尝试,我认为问题可能是该程序集没有公共类型。在.Net Reflector中查看程序集时,它们都是内部类。对于所有没有公共类型的程序集,VS会抛出与您遇到的相同错误。我预计Blend的接口要么没有检查到这一点,要么处理得更好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接