簡體   English   中英

名稱“XYZ”在名稱空間“clr-namespace:ABC”中不存在

[英]The name “XYZ” does not exist in the namespace “clr-namespace:ABC”

我正在努力創建一些標記擴展,並開始獲得非常奇怪的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>

代碼背后:

using System.Windows;

namespace WpfApplication4
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}

狗類:

namespace WpfApplication4
{
    public class Dog
    {

    }
}

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>

項目設置

我得到的例外情況:

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

我能夠運行解決方案,但設計師失敗並出現“無效標記”錯誤任何想法?

編輯

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

對於現在遇到這種情況的人來說,在你做任何事之前......如果你確定你的類/命名空間是正確的,並且重建還沒有解決你的問題:

嘗試重新啟動Visual Studio

而已!

這似乎是Visual Studio 2012的一個錯誤(似乎也會影響支持XAML開發的所有其他版本)


更新:如果重新啟動Visual Studio不起作用,請重新啟動整個PC。

更新:如@Dunk的評論中所述,如果重新啟動Visual Studio不起作用,請嘗試刪除.suo文件

您的解決方案正在網絡共享上運行。 在網絡共享上運行時,.Net(和Visual Studio)應用程序可能會遇到權限/訪問問題。

將您的解決方案復制到本地驅動器(完全信任),你應該沒問題。

可以讓網絡驅動器完全信任 - 你可以在StackOverflow和其他地方找到答案 - 但根據我的經驗,當我這樣做時我會遇到障礙,所以盡量避免它,除非它對於它是絕對關鍵的手頭的問題。

例如,此問題提供了有關如何執行此操作的說明:

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

我只用VS2010試過這個(如鏈接所示)你可能會更喜歡2012。

我遇到了同樣的問題,但我的文件存儲在本地。 我的IValueConverter與使用它的視圖駐留在不同的程序集中。 即使VS2013 IntelliSense建議如下,它也無法正常工作:

xmlns:conv="clr-namespace:MySharedAssembly.Converters"

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

xmlns:conv="clr-namespace:MySharedAssembly.Converters;assembly=MySharedAssembly"

我堅持這個錯誤幾個小時。 程序集和命名空間是正確的,類和引用也是正確的。 編譯並運行正常,只有設計師在某種程度上與我有問題。 唯一有效的方法

  1. 出於設計目的,從x64到x86
  2. 用於運行和調試切換回x64

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

下載的DLL解決方案

  1. 取消阻止.dll文件
    • 右鍵單擊它並選擇屬性
    • 在“常規”標簽中取消阻止它(見圖)
  2. 確保VS重新驗證XAML(可能通過重新啟動它)

在此輸入圖像描述

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

<Application.Resources>
    <!--Value Converters-->
    <local:SomeConverter x:Key="mySomeConverter"/>

STRG移-B
把它放回去 - 它起作用了。

創建指向本地驅動器上的網絡共享的符號鏈接。

轉到命令行並鍵入mklink / DC:\\ LOCALFOLDER \\ YOURNETWORKPATH

然后從本地文件夾中打開項目,所有問題都會消失。 現在所有文件仍將在您的網絡共享上。:)

在嘗試擴展解決方案之前,請嘗試以下操作:

我有完全相同的問題,我關閉導致錯誤的窗口/窗體然后運行項目,

一旦項目成功運行並且沒有恢復,錯誤似乎就清楚了。

希望這有助於任何尋求快速解決方案的人。

我正在開始一個新項目並遇到這個問題。 這里列出的解決方案都不適合我,包括刪除suo文件,卸載/重新加載項目,重啟VS等。

對我有用的是,因為這是一個新項目,我還沒有建立它。 我將Window.DataContext元素移除到剪貼板,構建項目一次(shift-ctrl-b),然后重新添加元素並立即運行。

我在Visual Studio 2015中遇到了同樣的錯誤,並設法通過取消選中“禁用項目代碼按鈕”來使設計人員工作。

截圖設計師按鈕

這讓我煩惱了2008年,10年,12年,13年。

每當發生這種情況時(是的,我正在處理網絡共享 - 我無法避免),我關閉VS,重命名FOLDER並重新打開項目。 十分之九,這是有效的。 一陣子。

對於任何其他人卡住。

對我有用的是將名稱空間別名從本地更改為其他任何內容。

xmlns:local="clr-namespace:ExampleNameSpace.Folder" />

<Grid>
    <StackPanel>
        <local:ReferencedUserControl />
    </StackPanel>
</Grid>

xmlns:blah="clr-namespace:ExampleNameSpace.Folder" />

<Grid>
    <StackPanel>
        <blah:ReferencedUserControl />
    </StackPanel>
</Grid>

希望這可以幫助!

有同樣的問題。 為我修復的是當我意識到有關課程被標記為internal

internal class MyClass
{
}

將其更改為public ,設計人員能夠正確編譯XAML。

對我XCOPY是在project properties中的Post Build中將MOVE更改為XCOPY ,然后re-build項目。 設計人員可能需要項目輸出文件夾中的dll。 我正在使用vs 2015

重新啟動Visual Studio后,我收到了一個IntelliSense錯誤,指出了我正確的方向。

由於“Microsoft.VisualStudio.DesignTools.Xaml.LanguageService.Semantics.Metadata.ReflectionTypeNode”在同一程序集中實現,因此必須設置x:Name屬性而不是Microsoft.VisualStudio.DesignTools.Xaml.LanguageService.Semantics.Metadata。 ReflectionPropertyNode屬性。

所以我改變了這個:

<local:MyView Name="test"/>

對此:

<local:MyView x:Name="test"/>

然后它奏效了。 那么,這給了我們什么? 42可能的原因? 虛幻...

我在網絡共享上也有一個項目,這個錯誤出乎意料地出現了。 我嘗試了上述所有建議,包括將項目復制到本地磁盤,清理,重建以及打開和關閉VS. 這些都沒有解決問題。

對我有用的只是刪除對viewmodels文件夾的命名空間引用(xlmns:vm =“clr-namespace:Myproj.ViewModel”)。

我將類型添加到我的xaml(DataTemplate DataType =“{x:Type vm:myviewmodel}”)。 Visual Studio然后檢測到命名空間丟失,我點擊提示添加命名空間。

在資源字典中聲明它對我有用。

<Window.Resources>
    <c:IsNullConverter x:Key="IsNullConverter" />
</Window.Resources>

問題似乎是解析器在看到像Converter={c:IsNullConverter}}"類的標記擴展時會自行Converter={c:IsNullConverter}}" ,但是可以使用: Converter={StaticResource IsNullConverter} 。我想也許這就是問題所在。

Windows 10,VS 2013

我在項目中有3個錯誤,並專注於有關ObjectDataProvider的此錯誤。 我發現如果項目由於其他錯誤而無法構建,則無法解決此錯誤。 我有幾個其他事件處理程序,其代碼已被刪除。 我還需要刪除試圖將處理程序鏈接到控件的代碼。 然后項目能夠構建並看到我嘗試從ObjectDataProvider引用的類是可用的。

名稱“XYZ”在名稱空間“clr-namespace:ABC”中不存在

解決了!!

檢查命名空間中是否存在要調用的函數/類

正確的例子:

.XAML文件

          <Window x:Class="objectbinding.MainWindow"
           <!--your xmlns:x .......
           namespace1 is the project name-->
           xmlns:m="clr-namespace:namespace1"
            Title="MainWindow" Height="350" Width="525">
    <Grid>
 <StackPanel Orientation="Vertical">
            <StackPanel.Resources>
                <ObjectDataProvider ObjectType="{x:Type m:StringData}"
                                    x:Key="anyname" MethodName="GetStrings"/>

            </StackPanel.Resources>

       ItemsSource="{Binding Source={StaticResource Runni}}" />
        </StackPanel>
    </Grid>

// StringData是xaml.cs中的類名,GetString是Function

.XAML.CS文件

 namespace namespace1
    {

        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }

        }
// the class StringData is defined in namespace namespace 1
        public class StringData
        {
            ObservableCollection<String> lst = new ObservableCollection<String>();

            public StringData()
            {
                lst.Add("Abhishek");
                lst.Add("Abhijit");
                lst.Add("Kunal");
                lst.Add("Sheo");
            }
            public ObservableCollection<String> GetStrings()
            {
                return lst;
            }
        }
    }

錯誤的例子:

.XAML文件

  <Window x:Class="objectbinding.MainWindow"
              <!--your xmlns:x .......
           namespace1 is the project name-->
           xmlns:m="clr-namespace:namespace1"
            Title="MainWindow" Height="350" Width="525">
    <Grid>
 <StackPanel Orientation="Vertical">
            <StackPanel.Resources>
                <ObjectDataProvider ObjectType="{x:Type m:StringData}"
                                    x:Key="anyname" MethodName="GetStrings"/>

            </StackPanel.Resources>

       ItemsSource="{Binding Source={StaticResource Runni}}" />
        </StackPanel>
    </Grid>

.XAML.CS

namespace namespace1
{

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
//The StringData is defined in the class mainWindow not in namespace namespace1
        public class StringData
        {
            ObservableCollection<String> lst = new ObservableCollection<String>();

            public StringData()
            {
                lst.Add("Abhishek");
                lst.Add("Abhijit");
                lst.Add("Kunal");
                lst.Add("Sheo");
            }
            public ObservableCollection<String> GetStrings()
            {
                return lst;
            }
        }
    }

}

在我的情況下,此錯誤是由已簽名的程序集啟用“僅延遲符號”引起的。 解決方案是從開發人員控制台(以管理員身份)運行命令sn -Vr * 這會注冊程序集以進行驗證跳過。 然后重新啟動Visual Studio。

這可能是由於Release配置造成的。 需要在Debug配置中使用Designer。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM