Ошибка вывода типа (CS0246) при компиляции из MSBuild 3.5, но не из Visual Studio - PullRequest
3 голосов
/ 30 марта 2011

Мы только что обнаружили интересную ошибку на нашем сервере сборки при компиляции некоторых недавних изменений из командной строки:

C: \ Windows \ Microsoft.NET \ Framework \ v3.5 \ MSBuild.exe

ошибка CS0246: не удалось найти тип или имя пространства имен 'var' (отсутствует директива using или ссылка на сборку?)

Код вопроса:

var response = _producerErrors.CreateTextMessage(); 

_producerErrors - это тип IMessageProducer из Apache.NMS
response это тип ITextMessage

Обратите внимание, что он успешно компилируется из Visual Studio, и я могу воспроизвести ошибку локально из командной строки, что, я думаю, исключает проблему конфигурации с сервером сборки.

Исправление, конечно, тривиально, но меня озадачило, почему компиляция происходит только из командной строки MSBuild? В рассматриваемом проекте используются другие ключевые слова var, которые прекрасно компилируются, поэтому я подозреваю, что это может быть связано со сборкой Apache, но что?

Ответы [ 2 ]

2 голосов
/ 04 февраля 2012

Вы абсолютно уверены, что в вашей директории 3.5 случайно нет компилятора 2.0?

0 голосов
/ 06 апреля 2013

Я только что столкнулся с подобной проблемой при попытке создать многоцелевой пакет NuGet.Код прекрасно скомпилирован в Visual Studio 2010 при установке целевой платформы на 3.5, но не скомпилирован в командной строке.После некоторых экспериментов я нашел выигрышное решение для командной строки, хотя мне не совсем ясно, в чем заключается основная проблема.

Для справки:

Успешно компилирует сборку с ссылками 4.0 (подтверждено проверкой через DotPeek):

C:\BuildAgent\work\efbf25fbf21ee436>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe My.csproj /p:Configuration=Release;TargetFrameworkVersion=v4.0;ToolsVersion=4.0 /t:Rebuild

Обратите внимание на вывод MSBuild:

Microsoft (R) Build Engine Version 4.0.30319.1
[Microsoft .NET Framework, Version 4.0.30319.296]

Успешно компилирует сборку с ссылками 2.0 / 3.5 (подтвержденопроверка через DotPeek):

C:\BuildAgent\work\efbf25fbf21ee436>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe My.csproj /p:Configuration=Release;TargetFrameworkVersion=v3.5;ToolsVersion=3.5 /t:Rebuild

Обратите внимание на вывод MSBuild:

Microsoft (R) Build Engine Version 4.0.30319.1
[Microsoft .NET Framework, Version 4.0.30319.296]

Не удается скомпилировать :

C:\BuildAgent\work\efbf25fbf21ee436>C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe My.csproj /p:Configuration=Release;TargetFrameworkVersion=v3.5;ToolsVersion=3.5 /t:Rebuild

Обратите внимание на MSBuildвывод:

Microsoft (R) Build Engine Version 3.5.30729.4926
[Microsoft .NET Framework, Version 2.0.50727.4984]
...