打开上面这个以App_Code为前缀的cs文件,你会发现它和项目中的App_Code文件夹下的代码文件是一样的。然后我们打开assembly这个文件夹,会发现Web Application项目生成的DLL文件,我们使用Reflector打开看看:
498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' title="2012-05-19_224137" style="border-top-width: 0px; padding-right: 0px; display: inline; padding-left: 0px; border-left-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; border-right-width: 0px" height="132" alt="2012-05-19_224137" src="/uploadfile/201301/5/66152039918.png" width="268" border="0" />
你会发现这个DLL里面也包含了App_Code文件夹里面的代码,因为我们刚才把它下面源文件的Build Action 改成了Compile,这样就造成了重复的类和方法。
其实解决这个问题的方法很简单,只要你将文件夹的名称改成不是"App_Code"就行了,这样ASP.NET运行时就不会对它有任何的特殊处理了。另外一个解决办法是维持App_Code下的代码文件的Build Action为Content,这样的话生成的DLL中就不会包含它,但这会造成Visual Studio的智能感知不起作用,因为这些文件将不会被识别为代码文件。
总之,微软在Web Application中去掉这个App_Code这个特殊的文件夹显然是有意为之。而我们程序员也不要自作聪明的为它加上,对网上的一些文章要抱着怀疑的态度来看待,一定要自己动手实践。
原文链接:http://www.cnblogs.com/moneyriver2006/archive/2012/05/19/2509302.html