【问题标题】:ASP.net Web Forms, get aspx/view errors at compile time?ASP.net Web 窗体,在编译时得到 aspx/view 错误?
【发布时间】:2011-09-30 14:03:06
【问题描述】:

我知道这可以用 mvc2 来完成,但是 Visual Studio(2010)/resharper(6) 有没有办法在编译时检查 aspx 页面上的错误并停止构建? Resharper 可以很好地检测到错误,因此似乎应该有一种方法可以将所有 aspx 页面的检查集成到构建过程中。

有什么建议吗?

【问题讨论】:

    标签: asp.net visual-studio-2010 webforms build-process resharper


    【解决方案1】:

    是的,你可以。以下步骤将导致 .aspx 文件作为 IDE 调用的正常构建的一部分进行编译,不需要 Resharper 插件。

    • 卸载您的网络应用程序(右键单击项目并选择“卸载项目”)
    • 在文本编辑器中打开 .csproj 文件(右键单击项目并选择“编辑 myProjectName.csproj”)
    • 在文件底部找到“To modify your build process...”的注释,并在该注释后插入以下内容:

    <Target Name="AfterBuild"><AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)" /></Target>

    来源 - Compile Aspx pages at compile time using the AspNetCompiler build task

    【讨论】:

    • 这突出了一个奇怪的依赖问题,所以我无法确认它是否工作。不过看起来很有希望,稍后会发布状态更新
    • 嗨贾斯汀和@DanaBenson 这一步肯定会突出错误,但它仍然说“重建全部成功”,可能是因为它是一个后编译步骤......所以,我认为没有什么可在编译时做,对吧???
    【解决方案2】:

    您可能不想在编译时执行此操作,因为编译视图很慢...

    您真正想要做的是在 CI 服务器上编译源代码之前执行一个 NAnt(或其他)任务,该任务将 XML 将此目标插入您的 web .csproj 文件。

    这样,您的开发人员不必每次在 Visual Studio 本地执行 CTRL+SHIFT+B 时都浪费时间浪费在 AspNetCompiler 上,但您仍然可以提醒人们注意 CI 服务器上存在语法错误的视图通过失败 CI 构建。

    更新:这是一种在 Visual Studio 之外运行视图构建的方法,但仍在本地 PC 上:)

    http://www.luisrocha.net/2011/10/avoiding-mvcbuildviews-build-time.html

    【讨论】:

    • 虽然你是正确的(尤其是在大型项目中)这会减慢构建速度,但能够以某种方式内联它以便开发人员将更大的变更集推送到 CI 服务器可以检查在他们被发送以确保它建立之前。不是每次,只是在某些情况下 - 所以默认情况下它是禁用的。
    • 1) 使用允许个人构建的 CI 系统(例如 TeamCity) 2) 有一个批处理/cmd/powershell 文件,该文件可以插入 MvcBuildViews=true 并在本地运行您的开发人员可以使用的集成测试在他们签入之前测试视图 3) 让 CI 环境为您捕捉到这一点,因为它不会经常发生。
    • 不确定 MvcBuildViews 是否是 WebForms 的有效选项,是吗?我知道这一点并在我的 MVC 框架上的项目中使用它,但我想到的不是。
    • 我工作的最后一个地方使用了@Mattygabe 提出的解决方案,但是有条件地在配置上这样做,这样如果你在发布模式下构建你可以在本地检查它,但默认的调试没有影响编译时间。 CI 构建总是构建 Release 位。
    猜你喜欢
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 2011-05-29
    相关资源
    最近更新 更多