ASP.NET发布报错CS0103:当前上下文中不存在名称“Sample”
问题根因
这个CS0103报错完全是ASP.NET两类Web项目对App_Code文件夹的编译规则差异导致的:
App_Code是**ASP.NET 网站项目(WSP)**的专属特殊文件夹,目录下的代码默认会在运行时动态编译,本地调试时VS内置开发服务器会自动适配这个规则,所以本地运行时调用完全正常。- 你当前用的是ASP.NET Web应用程序项目(WAP)——从报错路径的项目结构、aspx.cs里的partial类定义就能判断出来。这类项目发布走预编译逻辑:所有要打包的C#源码必须先被纳入项目编译清单,最终统一编译到输出的DLL文件里。但WAP项目默认不会把
App_Code文件夹下的.cs文件标记为待编译源码,发布时Sample类根本没被编译进输出程序集,自然会报找不到名称的错误。
解决方案
按优先级给三个可选方案:
- 最推荐的做法:避开特殊文件夹命名。直接把
App_Code改名为普通名称,比如AppCode、Common、Utils都可以,把Sample类移过去之后重新生成发布,就能正常调用,不会再有编译规则冲突。 - 如果一定要保留
App_Code这个名字:右键点击文件夹里的Sample.cs,打开属性面板,把「生成操作」从默认的「内容」改成「编译」,保存后重新生成发布即可。 - 如果你本来就是要用到
App_Code的动态编译特性:那说明你一开始建错了项目类型,应该选「ASP.NET 空网站」模板新建项目,而不是选Web应用程序模板,网站项目原生支持App_Code的运行时编译逻辑,不会有这个问题。
内容的提问来源于stack exchange,提问作者ahmedbahadir
相关产品推荐
相关产品推荐

