2010-08-18 3 views
2

Я использую город команды для вызова nant-скрипта, в настоящее время этот nant-скрипт очень упрощен и только вызывает задачу msbuild в одном проекте в решении.MSBuild, вызывающий неправильную версию csc.exe

Строка не работает, похоже, что msbuild 3.5 вызывается, но неправильно вызывает csc.exe из папки .net 2.0. Поскольку мы используем функции языка .net 3.5, компиляция не выполняется.

Посмотрите на файл csproj, как на ToolsVersion, так и на TargetFrameworkVersion, для использования 3.5. Что будет причиной того, что msbuild выберет неправильную версию csc.exe?

ответ

1

У вас есть версия 2.0 csc прямо на вашем пути, возможно?

Что происходит, когда вы запускаете msbuild из командной строки Visual Studio 2008?

+0

Там нет ничего в пути. Если я запускаю msbuild на сервере, он работает нормально. Там где-то есть ключ. Хм, я думаю, это либо teamcity, либо nant, а не msbuild. – ilivewithian

0

Вы можете прямо указать, которые MSBuild вы хотите использовать в Нан сценарии, объявив:

<!-- Initial path to use MSBuild from .NET Framework 3.5 --> 
<property name="MSBuildApp" value="C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe" /> 

И затем выполнить сборку с помощью MSBuild:

<exec failonerror="true" program="${MSBuildApp}" verbose="true"> 
     <arg value="${SlnDir}\${SlnFile}" /> 
     <arg value="/t:Rebuild" /> 
     <arg value="/p:Configuration=${SlnConfig}" /> 
    </exec> 

Или вы можете указать на соответствующие рамки .NET версия при запуске сценария NANT:

nant CreateYouProjectTask -t: net-3.5 -buildfile: BuildYourProject.build

6

MSBuild использует набор инструментов, целей и инструментов для создания приложения. Как правило, набор инструментов MSBuild включает файл microsoft.common.tasks, файл microsoft.common.targets и компиляторы, такие как csc.exe и vbc.exe. Для обеспечения того, чтобы MSBuild вызывал правильный компилятор C# (csc.exe), укажите параметр «Сервис» в атрибуте ToolsVersion элемента Project в файле проекта. В следующем примере указано, что проект должен быть построен с помощью набора инструментов MSBuild 4.0.

<Project ToolsVersion="4.0" ... </Project>

Более подробная информация, относящаяся к атрибуту ToolsVersion можно найти здесь: http://msdn.microsoft.com/en-us/library/78f4aasd.aspx

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