使用 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 网站