使用 MSBuild 预编译 ASP.NET Web 应用程序

Posted

技术标签:

【中文标题】使用 MSBuild 预编译 ASP.NET Web 应用程序【英文标题】:Precompiling ASP.NET Web application with MSBuild 【发布时间】:2009-10-13 07:04:10 【问题描述】:

我在 Visual Studio 2008 中有一个 c# Web 应用程序项目,我想对其进行预编译以进行部署。在查看了各种选项之后,似乎他们都有一些问题 - 也许有人可以就此发表他们的想法:

该项目受源代码控制,还包含许多从项目中排除的文件。

Web 部署项目不起作用。如果我尝试使用 wdp 进行编译,aspnet_compiler.exe 也会尝试编译所有排除的文件。我不想在 msbuild 脚本中维护排除列表。

有没有办法告诉 msbuild 仅使用 csproj 文件中指定的文件/项目,将它们复制到中间文件夹,并从不包含任何排除文件的该副本构建 aspnet_complier.exe?

该网站依赖于其他 3 个 csproj 文件。

谢谢!

【问题讨论】:

你得到这个结果了吗? 【参考方案1】:

您可以让 msbuild 任务隐藏(attrib +h)或删除不需要的文件...

  <PropertyGroup>
    <MyLogFile>kaantologi.txt</MyLogFile>
    <MyWebSourcePath>c:\sourecontrol\myweb</MyWebSourcePath>
    <!-- *.tmp and .exclude and etc: -->
    <MyCleaup>
      attrib $(MyWebSourcePath)\*.tmp -r -s -h -a /s >>$(MyLogFile)
      del $(MyWebSourcePath)\*.tmp /q /s >>$(MyLogFile)
      attrib $(MyWebSourcePath)\*.exclude +h
    </MyCleaup>
  </PropertyGroup>
  <Target Name="MyClean">
    <Exec Command="$(MyCleaup)" />
  </Target>
  <Target Name="MyFinal">
    <Exec Command="attrib $(MyWebSourcePath)\*.exclude -h"/>
  </Target>
  <Target Name="MyBuild">
    <CallTarget Targets="MyClean" />
    <CallTarget Targets="MyCompile" /><!--...-->
    <CallTarget Targets="MyFinal" />
  </Target>

或者您可以使用解决方案文件 (.sln) 并将您的 csproj 放在那里并构建它。

附言。不完全是您的问题,但这可能会有所帮助(它适用于网站,而不适用于 Web 应用程序):

Unable to publish using msbuild or aspnet_compiler using cc.net

【讨论】:

【参考方案2】:

您不能将 aspnet_compiler.exe 作为部署脚本的一部分运行吗? 不使用的文件为什么还在那里?

建议:在部署时运行编译器或删除文件

【讨论】:

以上是关于使用 MSBuild 预编译 ASP.NET Web 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在 TFS 2010 构建服务器中预编译 asp.net MVC 网站

理解 ASP.NET 预编译

如何修复 ASP.NET 错误“文件'nnn.aspx'尚未预编译,无法请求。”?

ASP.NET MVC5 视图预编译

WCF 和 ASP.Net 预编译

IIS 中的简单 asp.net 预编译问题