2010-07-22 4 views
3

Я пытаюсь использовать задачу AspNetCompiler в пользовательском файле msbuild, чтобы предварительно скомпилировать веб-сайт asp .net 4.0. Однако, когда я бегу:Неверная версия aspnetcompiler при использовании msbuild 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/

Он работает отлично, который имеет смысл, потому что я использую System.Web.Extensions в web.config и 2.0 aspnet_compiler не знают, что это такое.

ответ

11

ToolPath работает для задачи AspNetCompiler, но правильная вещь - просто установить атрибут ToolsVersion = "4.0" на элемент Project - это заставит все встроенные инструменты использовать правильную версию и d не требует жесткого кодирования путей.

+1

+1 это работало для меня на моем обычном построить проект для сайта MVC3. Проект был портом версии 2008 года (хотя никаких изменений не потребовалось, кроме добавления этого атрибута). Похоже, что это ошибка в MSBuild 4 - никакая версия инструментов не запускает некоторые инструменты по умолчанию для v2! –

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 как так:

<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> 
+0

@ VladL no, он действительно существует, только в базовом классе ToolTaskExtension. PLZ проверить это [ссылка] (http://msdn.microsoft.com/en-us/library/microsoft.build.tasks.tooltaskextension (v = vs.100) .aspx) – pinopino

Смежные вопросы