2012-04-26 97 views
11

我有一個服務器控件作爲我的MySite程序集中的一個類(即,我的站點的項目不僅包含aspx文件,還包含那些aspx文件引用的服務器控件)。我使用下面的代碼一個aspx文件中:命名空間中的歧義引用

<%@ Register Assembly="MySite" Namespace="MySite.misc" TagPrefix="TAC" %> 
... 
<TAC:CustomACM ID="myID" runat="server" /> 

類的代碼如下:

namespace MySite.misc 
{ 
    public class CustomACM : AutoCompleteExtender, INamingContainer 
    { 
     //... 
    } 
} 

該網站的作品和完美的編譯,但智能感知休息身份識別碼的兒童中。將類和註冊指令中的名稱空間更改爲MySiteSC.misc可修復此問題,但使用MySite.miscSC不起作用。 MySiteSCmiscSC在我的解決方案的其他地方都沒有使用,任何名稱空間中都不存在其他CustomACM類。

ReSharper用工具提示強調「MySite」(即註冊指令內的命名空間的一部分),「註冊指令未使用且可以安全移除\ n歧義引用」。禁用ReSharper可防止出現此錯誤,但不能解決問題。

我可以在不更改CustomACM控件的名稱空間(並且不將CustomACM控件移動到其他程序集)的情況下修復此問題嗎?

+0

這是Web應用程序,而不是一個網站是否正確?(您沒有將您的cs文件存儲在App_Code中) – Peter 2012-07-13 19:24:23

+0

這是一個Web應用程序,我沒有使用App_Code。 – Brian 2012-07-13 20:55:25

回答

0

檢查你的web.config文件

<assemblies> 
... 
</assemblies> 

部分,看看也許你不得不MySite.misc

+0

不,在我的web.config程序集中有0個對MySite的引用。當我添加一個,它確實正確解決,但不防止錯誤。 – Brian 2012-07-18 20:43:59

+0

您是否在屬性瀏覽器中檢查了重複列表的引用? – TheMoot 2012-07-20 17:00:15

+0

沒有重複的列表。 – Brian 2012-07-20 18:47:29

1

重複引用爲了讓您的控制,可以在頁面聲明中使用,則必須映射標記前綴到您的控件的名稱空間。

在您的自定義服務器控制項目中,您是否在文件AssemblyInfo.cs中添加了TagPrefixAttribute屬性?

您必須在文件末尾添加此行以在名稱空間和前綴之間創建映射。

[assembly: TagPrefix("MySite.misc", "TAC")] 

在文件的開頭添加這行:

Using System.Web.UI; 

之後你做到這一點,只要你從工具箱拖動到.aspx頁面中的自定義服務器控件,VS會自動添加註冊指令。

或者,如果您的自定義控件將用於Web應用程序中的多個頁面,則可以不使用register指令而指定web.config文件中的標記前綴/名稱空間映射。

<?xml version="1.0"?> 
<configuration> 
    <system.web>  
    <pages> 
    <controls> 
     <add tagPrefix="TAC" Assembly="MySite" 
     namespace="MySite.misc"> 
     </add> 
    </controls> 
    </pages> 
    </system.web> 
</configuration> 
+0

完成此操作後,我可以使用工具箱將CustomACM控件拖到頁面上。這樣做會自動在頁面頂部添加一條註冊指令,但新添加的註冊指令仍然受到模糊引用問題的困擾。 – Brian 2012-07-20 13:42:02

+1

你解決了這個問題嗎?我遇到了同樣的問題 – ydd1987 2013-03-28 18:55:11

+0

@ ydd1987:不,我仍然在使用我在原始問題中提到的解決方法(即對受影響的控件使用不同的名稱空間)。 – Brian 2013-09-18 12:54:37

5

Resharper在這裏是馬車恕我直言。通過清除ReSharper(ReSharper> Options> General> Clear Caches)的緩存,然後重新啓動VS並重新構建,可以解決問題。消息應該消失。我知道,這不是一個真正的解決方案,但它的工作原理。

+0

根據我原來的帖子,完全禁用ReSharper並不能解決問題。 – Brian 2014-01-21 14:08:02

+0

@Brian你的意思是「按我的原帖」?我看不到任何提示您禁用ReSharper的提示。你說,ReSharper強調了MySite。所以當你禁用ReSharper時,它仍然是強調的?或者我錯了? – sprinter252 2014-07-30 07:42:06

+1

從原始帖子中:「禁用ReSharper可防止出現此錯誤,但不能解決問題。」問題是,「網站工作和編譯完美,但智能感知在myID的孩子中斷了。」 – Brian 2014-07-30 12:55:10

相關問題