[英]the name <...> does not exist in the namespace clr-namespace <...>
[英]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"
我堅持這個錯誤幾個小時。 程序集和命名空間是正確的,類和引用也是正確的。 編譯並運行正常,只有設計師在某種程度上與我有問題。 唯一有效的方法
我正在使用3d party portable.library,我只在x64版本中使用過。
它仍然發生在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),然后重新添加元素並立即運行。
這讓我煩惱了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.