2012-02-05 191 views
13

我實現了一個轉換器的Int32轉換爲字符串能夠爲一個屬性綁定到一個文本框。標籤「XXX」不存在XML命名空間存在「CLR的命名空間:YYY」

我實現的命名空間MyApp.Converters該轉換器,它被稱爲Int32ToStringConverter。

然後,在我的axml我引用添加到我的轉換器如下:

<Window x:Class="MusicaDB.Views.PrincipalView" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:i="namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
     **xmlns:converter="clr-namesapce:MyApp.Converters, aseembly=MyApp**"> 

後來,在windows.Resources我:

<Window.Resources> 
     <**converter:Int32ToStringConverter** x:Key="Int32ToStringConverter" /> 
</Window.Resources> 

我得到的錯誤,標籤Int32ToString轉換器不存在於名稱空間MyApp.Converters,assembly = MyApp中。

我在本地硬盤驅動器的項目,在項目屬性,目標是.NET框架4.0,不是Framework 4.0客戶端配置文件,我嘗試清除該解決方案,並重新編譯,但問題仍然存在。

主要是,這是兩人的解決方案,我總能找到,但不解決我的問題。

回答

24

三個補丁,使這裏:

  1. 沒有空間 - >xmlns:converter="clr-namesapce:MyApp.Converters,aseembly=MyApp"
  2. 沒有拼寫錯誤 - >xmlns:converter="clr-namespace:MyApp.Converters,assembly=MyApp"
  3. 右分隔符 - >xmlns:converter="clr-namespace:MyApp.Converters;assembly=MyApp"

如何使用的東西之前讀the reference

注意,字符分隔從其值CLR-命名空間令牌是一個冒號(:)而字符分隔從它的值組件令牌是等號(=)。這兩個令牌之間使用的字符是分號。另外,不要在聲明的任何地方包含任何空格。

+0

參考鏈接不見了! – 2016-02-16 06:36:36

+2

@WaldoAlvarez:不是,這只是MSDN使用愚蠢的默認設置,如果您看到「此主題不再可用」,請從「其他版本」下拉列表中選擇以前的版本。 – 2016-02-16 07:49:04

+0

ahh ok謝謝,最好提供直接鏈接https://msdn.microsoft.com/en-us/library/ms747086(v=vs.100)。aspx – 2016-02-16 08:04:52

3

我看到了兩個可能的原因。首先是你在第一個星號行中拼寫「assembly」爲「aseembly」。改變拼寫可能就夠了。第二種可能性是,你還沒有加入MyApp.dll到您的項目引用,從而出現這樣

enter image description here

在Visual Studio

11

我探索,爲什麼發生這種情況,但如果你的轉換器的主要裝配,拆卸組裝=從你的xmlns:轉換器的標籤應該刪除生成錯誤。

2

在我的情況,我有同樣的問題xmlns:local="clr-namespace:<mydefaultnamespace>"。 我解決了這個改變包含的順序。我把它放在第一位,一切都解決了。 一個奇怪的行爲,但這是我在我的情況中找到的解決方法。

0

在我的情況,含有命名空間中的組件是不是身體有

我檢查了具有構建錯誤的程序集的引用,並查看了引用的程序集的屬性。

我導航到路徑並發現程序集確實缺失(,我意識到這是我自己的做法),導致誤導性錯誤。

18

此問題的另一種可能的解決方案是,您沒有在項目和庫中使用相同版本的.Net。

+0

這非常有幫助 - 我的語法正確,但忘記爲我所引用的新程序集設置框架版本。謝謝。 – 2014-12-30 18:28:54

+1

你是救命的人。 – MetalMikester 2015-11-03 15:08:36

+0

你能詳細解釋一下嗎?更多詳細信息 – 2016-02-16 06:34:03

3

所有的答案都是正確的。並嘗試所有這些後,你不能配置它爲什麼發生,一切似乎沒問題,請重新啓動Visual Studio。

浪費了近1小時後,我工作。我發現一切正常,但重新啓動與管理VS。

+0

我從字面上試圖找出約3小時左右的事情!你的建議重新啓動VS做了詭計! – 2016-12-23 20:49:02

0

僅當組合標籤位於另一個項目中時才使用組合標籤。 另外明智地只使用命名空間標籤。 對我來說,這個固定的問題

1

還有就是當你收到此錯誤一個非常模糊的情況下 - 如果你正在使用Microsoft.mshtml.dll,並在升級到Windows 10週年紀念版,或因爲它原來的創造者也版本。

即使這不是你遇到的情況,也要確保包含無法找到的組件的庫可以完全編譯。尋找錯誤列表(不是網格,但輸出控制檯)的任何線索。

在我的情況下,我使用Microsoft.mshtml.dll作爲HTML編輯器的一部分,它以某種方式未被註冊(在GAC中)。

下面的文章解釋了截圖:

https://techninotes.blogspot.com/2016/08/fixing-cannot-find-wrapper-assembly-for.html#comment-form

總之,我不得不運行Visual Studio命令提示符(作爲管理員)運行這些命令:

cd C:\Windows\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a 
regasm Microsoft.mshtml.dll 

我沒有說晦澀:-)重要的一點是要閱讀可能隱藏在所有警告中的錯誤,因爲可能存在重要線索。

如果操作系統更新突然中斷您的項目,這可能會特別令人困惑。

相關問題