名称"XYZ"在名称空间"clr-namespace:ABC"中不存在

Vit*_*lij 66 c# wpf xaml

我正在努力创建一些标记扩展,并开始获得非常奇怪的VS行为.我已经在单独的解决方案中提取并确定了问题.问题是VS无法在XAML中创建CLR对象.

这里是:

视图:

<Window x:Class="WpfApplication4.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:wpfApplication4="clr-namespace:WpfApplication4">
    <Window.Resources>
        <wpfApplication4:Dog x:Key="doggy" />
    </Window.Resources>
    <Grid />
</Window>
Run Code Online (Sandbox Code Playgroud)

代码背后:

using System.Windows;

namespace WpfApplication4
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

狗类:

namespace WpfApplication4
{
    public class Dog
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

App.Xaml(App.Xaml.cs中没有代码):

<Application x:Class="WpfApplication4.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>

    </Application.Resources>
</Application>
Run Code Online (Sandbox Code Playgroud)

项目设置

我得到的例外情况:

Error   1   The name "Dog" does not exist in the namespace "clr-namespace:WpfApplication4". \\hopr1\folders$\vxk\Documents\Visual Studio 2012\Projects\WpfApplication4\MainWindow.xaml  6   9   WpfApplication4
Run Code Online (Sandbox Code Playgroud)

我能够运行解决方案,但设计师失败并出现"无效标记"错误任何想法?

编辑

我正在运行VS 2012 Update 2相同的解决方案在VS 2012 Update 1中运行

Jor*_*dan 112

对于现在遇到这种情况的人来说,在你做任何事情之前......如果你确定你的类/命名空间是正确的并且重建并没有解决你的问题:

尝试重新启动Visual Studio

而已!

这似乎是Visual Studio 2012的一个错误(似乎也会影响支持XAML开发的所有其他版本)


更新:如果重新启动Visual Studio不起作用,请重新启动整个PC.

更新:如@Dunk的评论中所述,如果重新启动Visual Studio不起作用,请尝试删除.suo文件

  • 我退出Visual Studio,删除.suo文件(根据另一个用户的建议)并重新启动visual studio并解决了这个问题.我不确定重新启动或删除.suo文件是否是解决方案但是这两者都很简单. (11认同)
  • 谢谢你,你节省了我几个小时寻找答案.这在VS2013 Update 2中发生在我身上并重新启动修复它. (3认同)
  • 重启VS几次.没有帮助.删除.suo文件. (3认同)
  • 也适用于VS2013 Update 4.删除.suo文件. (3认同)

Gra*_*mMc 47

您的解决方案正在网络共享上运行.在网络共享上运行时,.Net(和Visual Studio)应用程序可能会遇到权限/访问问题.

将您的解决方案复制到本地驱动器(完全信任),你应该没问题.

可以让网络驱动器完全信任 - 你可以在StackOverflow和其他地方找到答案 - 但根据我的经验,当我这样做时我会遇到障碍,所以尽量避免它,除非它对于手头的问题.

例如,此问题提供了有关如何执行此操作的说明:

为Visual Studio 2012和.Net 4.0提供FullTrust到UNC共享

我只用VS2010试过这个(如链接所示)你可能会更喜欢2012.

  • 在Parallels中运行Visual Studio并将解决方案存储在Mac的文件系统上似乎也会导致这种情况(Parallels使用网络共享来访问OS X文件系统).将解决方案复制到虚拟C驱动器上的绝对路径为我解决了这个问题. (3认同)
  • 请注意,根据belugabobs对问题的评论,此问题可能发生在除网络共享之外的其他位置 - 任何没有完全信任的位置.有人可能能够解释究竟是什么导致问题,而不仅仅是解决方案是什么 (2认同)

Wou*_*ter 31

我遇到了同样的问题,但我的文件存储在本地.我的IValueConverter与使用它的视图驻留在不同的程序集中.即使VS2013 IntelliSense建议如下,它也无法正常工作:

xmlns:conv="clr-namespace:MySharedAssembly.Converters"
Run Code Online (Sandbox Code Playgroud)

在我最后明确添加了程序集后,它工作正常:

xmlns:conv="clr-namespace:MySharedAssembly.Converters;assembly=MySharedAssembly"
Run Code Online (Sandbox Code Playgroud)

  • 添加; assembly =也适用于我 (7认同)

Ste*_*hev 11

我坚持这个错误几个小时.程序集和命名空间是正确的,类和引用也是正确的.编译并运行正常,只有设计师在某种程度上与我有问题.唯一有效的方法

  1. 出于设计目的,从x64到x86
  2. 用于运行和调试切换回x64

我正在使用3d party portable.library,我只在x64版本中使用过.


con*_*tio 11

下载的DLL解决方案

  1. 取消阻止.dll文件
    • 右键单击它并选择属性
    • 在"常规"标签中取消阻止它(见图)
  2. 确保VS重新验证XAML(可能通过重新启动它)

在此输入图像描述

  • 谢谢,当我清除ShadowCache时,这对我有用.%LOCALAPPDATA%\微软\ VisualStudio的\ 14.0 \设计\ ShadowCache (4认同)

And*_*man 6

它仍然发生在VS 2015中.我在App.xaml中取出了SomeConverter:

<Application.Resources>
    <!--Value Converters-->
    <local:SomeConverter x:Key="mySomeConverter"/>
Run Code Online (Sandbox Code Playgroud)

Strg-Shift-B
把它放回去 - 它起作用了.

  • 什么是'Strg`? (2认同)