處理一個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個字符。
第二天,再次打破...沒有改變任何東西。
重新啓動IIS,重新啓動盒子,在滿月的光照下犧牲小兔子....重建所有作品,但後來它有時無法在實際網站上編譯。 – wiredog 2010-11-16 18:26:16