MSBuild вызывает неверную версию csc.exe - PullRequest
2 голосов
/ 18 августа 2010

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

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

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

Ответы [ 3 ]

6 голосов
/ 20 сентября 2012

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

0 голосов
/ 20 августа 2010

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

<!-- 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 Framework при запуске сценария NANT:

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

0 голосов
/ 18 августа 2010

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

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

...