App_Code 目录中的默认构建操作?
Posted
技术标签:
【中文标题】App_Code 目录中的默认构建操作?【英文标题】:Default Build Action in App_Code directory? 【发布时间】:2011-01-03 16:49:49 【问题描述】:每次我在 MVC 3 Web 应用程序的 App_Code 目录下的任何位置添加一个新类时,都会使用“内容”的构建操作进行设置。我需要默认将其设置为“编译”。 Visual Studio 中是否有某个地方可以为此目录下的代码设置默认构建操作?
【问题讨论】:
出于好奇,您在其中放置了什么代码?我现在正沉浸在一个大型 MVC 应用程序中,从来没有放过任何东西,所以很好奇我是否错过了什么。 我有几个自定义操作过滤器属性、html 助手等。似乎是放置它们的合乎逻辑的地方,因为它们是 MVC 特定的类。 Schluer 我强烈建议不要将 App_Code 用于此类域类。将附属程序集或附加文件夹添加到项目结构中会更简洁,以便它们具有特定的命名空间。在现代 ASP.NET 开发中,App_Code 目录很少是最佳选择。 【参考方案1】:MVC 项目不是网站项目,它们是 Web 应用程序项目。网站项目(除非预编译)与源代码一起部署,并由 ASP.NET 运行时动态编译。 Web 应用程序项目作为单独的阶段构建和部署。 App_Code 是一个特殊的 ASP.NET 文件夹,它与应用程序的其余部分分开编译。这就是为什么 App_Code 中的项目默认为 Content 的原因,因此它们可以与应用程序(被编译)分开部署(源代码)。
在 Web 应用程序项目中,您的项目布局不受任何标准格式的约束,归根结底它的所有编译代码。我建议在项目中使用Models
文件夹,或者只是创建自己的文件夹,我不会使用 App_Code。
【讨论】:
感谢您的信息。这有帮助。然后我将重组我的项目以避免使用 App_Code 目录。 不要忘记,如果您将东西从 App_Code 移动到其他地方,它不会改变您的构建操作,您必须自己将其设置为Compile
。
但是你把剃须刀辅助函数放在哪里呢? Scott Gu 说 MS 作弊并将 razor 函数放在 App_Code 目录中,因为他们在开发周期中没有时间将它们放在 Views 文件夹中的适当位置。我遇到了这个问题,因为我正在使用剃须刀助手,并且我想预编译我的 cshtml 代码以获得更好的性能。有人对如何处理剃须刀助手有建议吗?我假设人们只是不使用它们?
如果有人遇到这个问题,这就是我为我们解决的方法。我一直在使用剃须刀助手,并将它们保存在 App_Code 中。我将 App_Code 标记为内容,以便在 VSTS 上成功构建。在 VSTS 上的构建定义中,我添加了必要的标志来预编译 CSHTML 文件。在我们的部署中,我添加了删除“App_Code”的删除文件任务。我将删除文件任务放在部署到 Azure 之上。这使我们能够使用 razor 助手并预编译我们的文件并部署到 azure 而不会出现问题以上是关于App_Code 目录中的默认构建操作?的主要内容,如果未能解决你的问题,请参考以下文章