Я добавил Microsoft.CodeDom.Providers.DotNetCompilerPlatform на мой сайт в моем Решение Visual Studio 2015 для предоставления некоторых функций C# 6 с использованием Nuget. Все работает и прекрасно строится локально.Создайте WebSite в TFS, который использует C# 6
Я проверил код в TFS и создал для него задачу сборки. Однако я получаю следующее сообщение об ошибке, когда этот построен с помощью TFS:
ShowcasePortal\web.config(20,0): Error ASPCONFIG: The CodeDom provider type "Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" could not be located.
При выполнении строки:
Build:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v /localhost_15584 -p ShowcasePortal\ -u -f PrecompiledWeb\localhost_15584\
Это все организовано на визуальной студии онлайн.
Есть ли способ получить эту сборку?
UPDATE:
Я заметил, по умолчанию, что папка Bin не проверяется автоматически. У этого есть локальная папка Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll, а также папка roslyn. Я добавил это в систему управления (не слишком уверен, что если папка Рослин должна быть добавлена. После добавления этой работы.
packages.config
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.2" targetFramework="net461" />
<package id="Microsoft.Net.Compilers" version="1.3.2" targetFramework="net461" developmentDependency="true" />
</packages>
BUILD Definiton
построение определения выглядит следующим образом:
Это просто стандартная сборка ботов для решения, где я не сделал ничего особенного, чтобы сделать эту сборку.
UPDATE 8 декабря
Я добавил бен \ Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll.refresh файл контроля версий и стартовало сборки, который дал мне следующую ошибку:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v /localhost_15584 -p ShowcasePortal\ -u -f PrecompiledWeb\localhost_15584\
ASPNETCOMPILER(0,0): Error ASPRUNTIME: Could not find a part of the path 'C:\a\1\s\ShowcasePortal\bin\roslyn\csc.exe'.
Теперь папка bin \ Roslyn существует на моей машине локально. Это не проверено.
Существует еще один пакет на nuget с именем Microsoft.CodeDom.Providers.DotNetCompilerPlatform.BinFix. Я установил это и попробовал сборку облаков. Это не сработало - оно получило ту же ошибку (не удалось найти csc).
РАБОЧИЙ РАСТВОР
При добавлении пакета Microsoft.CodeDom.Providers.DotNetCompilerPlatform, он приносит с собой пакет зависимого Microsoft.Net.Compilers. Это добавляет файл Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll на веб-сайт Bin. Существует также папка Bin \ Roslyn, которая не добавляется в решение. Это содержит различные исполняемые файлы компилятора. Как только Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll будет проверен на управление версиями, а также ВСЕ файлы Bin \ Roslyn, сборка облачного сервера будет успешно скомпилирована.
Вы должны добавлять слухи как пакет NuGet и не проверять их непосредственно в исходном элементе управления. –
, по крайней мере, в моей фирме это произошло потому, что это был веб-сайт, а не веб-приложение, а это означает, что одним из решений было бы пройти процесс превращения веб-сайта в webapp. другой сценарий Microsoft забыл проверить. –
Я попытался преобразовать наш монолитный веб-сайт в веб-приложение, следуя нескольким онлайн-рекомендациям. Я сдался из-за количества ошибок! – Andez