У нас есть проект веб-сайта, на котором установлены следующие пакеты nuget
Microsoft.CodeDom.Providers.DotNetCompilerPlatform - 1.0.8
Microsoft.Net.Compilers - 2.4.0
web.config
имеет следующее
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
Сборки работают локально. Когда DotNetCompilerPlatform
установлен, install.ps1 сценарий создает папку Roslyn в корзине и копирует csc.exe и т. Д. В эту папку.
Код написан третьей стороной и передан в наш репозиторий VSTS. Я хочу использовать VSTS для создания и развертывания веб-сайта в наших средах тестирования / этапа и среды разработки.
Конвейер сборки VSTS получает исходный код, затем восстанавливает пакеты и запускает задачу сборки Visual Studio для решения. Это проект веб-сайта, поэтому он не предназначен для сайта. Сборка завершается с ошибкой
ASPNETCOMPILER (0,0): ошибка ASPRUNTIME: не удалось найти часть
путь 'xxxxxxxxxx \ bin \ roslyn \ csc.exe'.
Поскольку сборка только восстанавливает пакет, двоичные файлы R oslyn не копируются в корзину .
Я также пытаюсь удалить пакеты из проекта и удалить компиляторы из web.config
, но затем получаю сообщение об ошибке.
Ошибка CS1056: неожиданный символ '$'
где я использую некоторые новые языковые функции.
Я действительно хочу автоматизировать PreCompile и Publish, так как на данный момент слишком много ручных шагов, которые открыты для ошибок или злоупотреблений.
Одна мысль, которая у меня возникла, заключалась в добавлении шага в конвейер сборки после восстановления пакета, чтобы запустить install.ps1 из папки пакета DotNetCompilerPlatform
, которая, будем надеяться, скопирует инструменты компилятора в корзину. то есть имитировать то, что делается при установке пакета. Но прежде чем идти по этому пути, я хотел посмотреть, есть ли лучшее решение.