使用msbuild 4.0时,aspnetcompiler的版本错误

时间:2010-07-22 18:51:15

标签: msbuild msbuild-task

我正在尝试在自定义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不知道那是什么。

2 个答案:

答案 0 :(得分:11)

ToolPath适用于AspNetCompiler任务,但正确的做法是在Project元素上设置ToolsVersion =“4.0”属性 - 这将导致所有内置工具使用正确的版本,并且不需要路径硬编码。

答案 1 :(得分:4)

好吧,我碰巧在另外搜索一下,在这里找到了我自己问题的答案:

http://blogs.msdn.com/b/webdevtools/archive/2010/05/14/the-aspnet-compiler-build-task-in-visual-studio-2010-asp-net-mvc-2-projects.aspx

我最终使用的是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>