我正在尝试在自定义msbuild文件中使用AspNetCompiler任务来预编译asp .net 4.0网站。但是,当我跑:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe custom.msbuild /t:PrecompileWeb
它使用v2.0.50727 aspnet_compiler。有没有办法强制它使用v4.0.30319 aspnet_compiler?我问的原因是因为我收到了这个错误:
ASPCONFIG: Unrecognized configuration section system.web.extensions.
但是,如果我跑:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -p .\My.Web.Site -f .\.PRECOMPILATION -v /
它运行正常,因为我在web.config中使用system.web.extensions而且2.0 aspnet_compiler不知道那是什么。
答案 0 :(得分:11)
ToolPath适用于AspNetCompiler任务,但正确的做法是在Project元素上设置ToolsVersion =“4.0”属性 - 这将导致所有内置工具使用正确的版本,并且不需要路径硬编码。
答案 1 :(得分:4)
好吧,我碰巧在另外搜索一下,在这里找到了我自己问题的答案:
我最终使用的是AspNetCompiler任务的ToolPath属性,如下所示:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="PrecompileWeb">
<AspNetCompiler
VirtualPath="/MyWebSite"
PhysicalPath="c:\inetpub\wwwroot\MyWebSite\"
TargetPath="c:\precompiledweb\MyWebSite\"
Force="true"
Debug="true"
ToolPath="C:\Windows\Microsoft.NET\Framework\v4.0.30319\"
/>
</Target>
</Project>