【问题标题】:How do I automate the building of a vs2005 website with msbuild?如何使用 msbuild 自动构建 vs2005 网站?
【发布时间】:2011-08-30 16:51:10
【问题描述】:

我正在使用旧的 Visual Studio 2005 网站(不是 Web 应用程序项目)。当前的目标是复制我们的手动过程作为我们自动化构建的一部分。我目前无法选择升级项目、创建 Web 部署项目或将其更改为 Web 应用程序项目。

当前流程的最简单观点是,开发人员将在他的盒子上构建解决方案,将网站发布到他盒子上的某个位置,将其压缩并交给发布团队。

我现在不打算更改此过程的输出,只是将其作为我们的 msbuild 脚本的一部分自动化。

到目前为止,我最接近的是使用 AspNetCompiler 任务,如下所示:

<AspNetCompiler
  PhysicalPath="website\"
  TargetPath="output\"
  VirtualPath="/"
  Force="true"
  Debug="true"
  />

但是,这会导致一些错误,例如 error CS0246: The type or namespace name 'FOO' could not be found (are you missing a using directive or an assembly reference?)


编辑:

我之前应该提到过这一点,但是在具有重建目标的解决方案上运行 msbuild 会得到相同的结果。

【问题讨论】:

    标签: asp.net msbuild visual-studio-2005 aspnet-compiler


    【解决方案1】:

    我宁愿使用 MSBuild.exe 本身 - (1) 构建和发布并将发布目录设置为您的目标文件夹或 (2) 构建和 xcopy bin 文件夹、aspx/asmx/svc 文件和配置(假设您有在目标计算机上的 IIS 中配置的网站)。

    【讨论】:

    • 只是调用 msbuild 做同样的事情。
    【解决方案2】:

    我曾经描述过如何在这种情况下使用combination of aspnet_compiler and aspnet_merge

    【讨论】:

    • 我不能只使用 aspnet_compiler 上的 -v 开关,因为我们的构建机器没有虚拟目录。如果我调整它以使用 -p 标志,我最终会遇到相同的错误。
    【解决方案3】:

    在我看来,该错误实际上与您的项目无法编译这一事实有关,而不是与您的 MSBuild 问题有关。

    要么是那个,要么你使用的是较低版本的编译器(通常是在它开始播放明显存在的引用时)。

    确保您使用的 MSBuild 版本与您在项目中使用的版本相匹配。

    【讨论】:

    • 它在 Visual Studio 中构建良好,更改工具版本不会改变结果。
    • 那是因为 Visual Studio 不预编译网站项目。
    • 是的,它们是在第一次访问它们时编译的,但是当我使用 VS 执行所有操作时,我可以使用报告错误的页面与 MSBuild 一起编译。
    • 这很奇怪,只有这么多的东西可以导致这种情况。尝试在发生错误的 aspx 中添加对汇编指令的显式引用。
    猜你喜欢
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    相关资源
    最近更新 更多