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

smo*_*oak 3 msbuild msbuild-task

我正在尝试在自定义msbuild文件中使用AspNetCompiler任务来预编译asp .net 4.0网站.但是,当我跑:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe custom.msbuild /t:PrecompileWeb
Run Code Online (Sandbox Code Playgroud)

它使用v2.0.50727 aspnet_compiler.有没有办法强制它使用v4.0.30319 aspnet_compiler?我问的原因是因为我收到了这个错误:

ASPCONFIG: Unrecognized configuration section system.web.extensions.
Run Code Online (Sandbox Code Playgroud)

但是,如果我跑:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -p .\My.Web.Site -f .\.PRECOMPILATION -v /
Run Code Online (Sandbox Code Playgroud)

它运行正常,这是有道理的,因为我在web.config中使用system.web.extensions而2.0 aspnet_compiler不知道那是什么.

nit*_*one 11

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


smo*_*oak 5

好吧,我碰巧又搜索了一些,并在这里找到了我自己问题的答案:

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>
Run Code Online (Sandbox Code Playgroud)