Из-за ошибки в компиляторе Roslyn я не могу построить свой проект с использованием v1.0 компилятора (нет обходного пути, чтобы заставить его работать с 1.0). Однако Microsoft исправила проблему в более поздней версии компилятора.Использование специальной версии компилятора Roslyn в TeamCity
При использовании Visual Studio вы можете использовать определенную версию компилятора, добавив пакет NuGet, доступный от https://www.nuget.org/packages/Microsoft.Net.Compilers/ к вашему проекту. Это заставляет Visual Studio использовать указанную версию компилятора при создании проекта.
Однако при попытке запустить сборку на TeamCity она, похоже, не знает, использовать новую версию компилятора. Он позволяет только выбрать, какую версию Visual Studio использовать. Есть ли способ указать TeamCity, какую версию компилятора использовать вручную?
Примечание: Я использую TeamCity Professional 9.1.3 (сборка 37176) и на стадии сборки я выбрал Visual Studio 2015
Когда построен на месте, сборка осуществляется с помощью:
D:\BitBucket\LocalPackages\Microsoft.Net.Compilers.1.1.0-beta1-20150928-02\build\..\tools\csc.exe /noconfig /nowarn:1701,1702,2008 ....
Но когда построен на TeamCity, журнал показывает:
[Csc] C:\Program Files (x86)\MSBuild\14.0\bin\csc.exe /noconfig /nowarn:1701,1702 .....
у меня есть аль так подтвердил, что пакет установлен как часть TeamCity сборки (до команды CSC):
[Exec] Installing 'Microsoft.Net.Compilers 1.1.0-beta1-20150928-02'.
Является ли это просто симптом, как NuGet может вести себя по-разному в Visual Studio UI против командной строки? И если да, есть ли обходной путь?
Обновление: Я так и не понял. Запуск сборки в Visual Studio на сервере сборки работал отлично, но запуск сборки с использованием одних и тех же файлов с помощью TeamCity не сработал.
Однако Microsoft выпустила обновление VS2015 Update 1, в котором исправлена моя оригинальная проблема, хотя и не эта конкретная проблема.
Когда вы запускаете nuget из командной строки, вы не устанавливаете пакет, а восстанавливаете его. Таким образом, вложенный файл реквизита уже находится в csproj. Не могли бы вы попробовать запустить msbuild из командной строки TeamCity? Возможно, он по умолчанию вводит некоторые другие свойства. Кроме того, можете ли вы разместить подробный вывод сборки? Вы также могли бы попытаться создать msbuild самостоятельно в агенте сборки и проверить, соответствует ли это правильной версии csc. – Tamas