2010-11-16 32 views
3

處理一個Asp.Net項目,添加一個新的控件(ascx),遇到一個奇怪的CS0234問題。基本上,編譯器找不到完全限定的名稱空間。是什麼讓它真的真的奇怪的是,有時它可以找到它,有時它不能。每次構建時,都無法在不同的文件中找到它。也就是說,它有時會建立。有時它會在文件a和b中找到它,但不是c和d。有時它會在a,b和c中找到命名空間,但不會d。和其他所有的排列組合。Asp.Net中的子命名空間太多? CS0234

添加在類ClassName(ClassName.ascx和ClassName.ascx.cs文件)中定義的新控件。

的路徑是:C:.. \項目\ WebuserControls \ ControlType

的命名空間是Project.WebUserControls.ControlType

在整個項目中,我打電話Project.WebUserControls.ControlType.ClassName.SomeMethod();我編譯時出現錯誤「CS0234類型或命名空間名稱'Project.WebUserControls.ControlType'不存在於類或名稱空間'Project.WebUserControls'中(您是否缺少程序集引用?)「,儘管它確實存在於該名稱空間中。此外,Intellisense無法找到名稱空間或其中的任何內容。

C#文件的形式爲

namespace Project.WebUserControls.ControlType 
{ 
    using System 
    ...etc 
    public partial class ClassName : System.Web.UI.UserControl 
    { 

很多關於谷歌搜索我發現this,這可能導致溶液。

在web.config中:

<system.web> 
    ... 
    <pages> 
     ... 
     <namespaces> 
      <add namespace="Project.WebUserControls" /> 

有趣的是,如果我namespace="Project.WebUserControls"namespace="Project.WebUserControls.ControlType"取代它不會編譯。

此修補程序可以運行大約半個小時,還有幾個版本,但現在已停止工作。不,我沒有更改任何代碼以使其停止工作。

任何想法?


幾個小時後: 移動類名,無論是類和文件,在命名空間和路徑上一級分別似乎已經解決了這一問題。也就是說,它現在在命名空間Project.WebUserControls和路徑c中:.. \ Project \ WebUserControls \

不知道爲什麼這會起作用。路徑名遠遠低於255個字符。


第二天,再次打破...沒有改變任何東西。

回答

0

聽起來像vstudio/IIS所做的陰影副本沒有被正確重建/使用。

嘗試內置的開發者服務器(在vstudio)或重新啓動IIS

+0

重新啓動IIS,重新啓動盒子,在滿月的光照下犧牲小兔子....重建所有作品,但後來它有時無法在實際網站上編譯。 – wiredog 2010-11-16 18:26:16

0

聽起來更像是Visual Studio的問題比C#/。NET的問題給我。

只是爲了澄清:只有在添加一些類後纔會出現這些錯誤,然後嘗試訪問它,或者在每次構建之後隨機使用,即使您沒有添加任何內容?

+0

每次構建後隨機。即使在空白行添加或刪除空格也可以。 – wiredog 2010-11-17 13:42:00

+0

另外,它也發生在其他盒子上,所以它不是我盒子上的錯誤配置。那麼,不只是在我的盒子上。 – wiredog 2010-11-17 13:43:35

+0

@wiredog:奇怪......如果你執行清理解決方案,然後完整的重建? – 2010-11-17 15:02:56

相關問題