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

4

我正在尝试在自定义的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个回答

11

ToolPath 可以用于 AspNetCompiler 任务,但更好的做法是在项目元素上设置 ToolsVersion="4.0" 属性 - 这将使所有内置工具使用正确的版本,而不需要硬编码路径。


1
+1 这对我在我的自定义构建项目中为MVC3网站工作。该项目是从2008版本移植而来的(尽管实际上除了添加此属性外,不需要进行任何更改)。看起来这是MSBuild 4中的一个错误 - 没有工具版本会导致某些工具默认为v2! - Andras Zoltan

5
我发现了解决我的问题的答案,它与IT技术有关。请看以下链接:链接。我最终使用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>

@VladL 不,它确实存在,只是在基类ToolTaskExtension中。请查看此链接:http://msdn.microsoft.com/en-us/library/microsoft.build.tasks.tooltaskextension(v=vs.100).aspx - pinopino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接