Я пытаюсь запустить проект Asp.net MVC, полученный из системы контроля версий TFS. Я добавил все ссылки на сборки и смог успешно собрать и скомпилировать без каких-либо ошибок или предупреждений.
Но я получаю следующую ошибку в браузере:
Не удалось найти часть пути 'C: \ B8akWorkspace \ B8akProject \ B8akSolution \ B8AK.Portal \ bin \ roslyn \ csc.exe'.
Вот полный скриншот страницы ошибки.
После нескольких дней исследований я понял, что Roslyn - это платформа компилятора .Net, которая предлагает расширенные функции компиляции. Однако я не понимаю, почему моя сборка пытается найти \ bin \ roslyn \ csc.exe, потому что я не настроил ничего, связанного с Roslyn, и не собираюсь использовать Roslyn в своем проекте.
.csproj
файле.Ответы:
Проблема с шаблонами VS2015 по умолчанию заключается в том, что компилятор фактически не копируется в каталог tfr \ bin \ roslyn \, а скорее в каталог {outdir} \ roslyn \
Добавьте этот код в ваш файл .csproj:
источник
TL; DR
запустите это в консоли диспетчера пакетов:
Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r
Больше информации
Эта проблема не связана с самой Visual Studio, поэтому ответы, предлагающие добавить шаги сборки для копирования файлов, являются скорее обходным путем. То же самое с добавлением двоичных файлов компилятора вручную в проект.
Компилятор Roslyn происходит из пакета NuGet, и в некоторых версиях этого пакета была / была ошибка (я точно не знаю, какие из них). Решение состоит в том, чтобы переустановить / обновить этот пакет до версии без ошибок. Первоначально, прежде чем я написал ответ в 2015 году, я исправил его, установив следующие пакеты в определенных версиях:
Затем я заглянул в .csproj и убедился, что пути к пакетам верны (в моем случае .. \ .. \ packages \ *. *) Внутри тегов
<ImportProject>
сверху и<Target>
с именем «EnsureNuGetPackageBuildImports» внизу. Это на MVC 5 и .NET Framework 4.5.2.источник
Ваша сборка пытается найти,
\bin\roslyn\csc.exe
потому что следующие пакеты были добавлены в ваш проект. Просто просмотрите вашpackages.config
файл, вы можете иметь их оба тамЕсли вы не заинтересованы в использовании Roslyn, следуйте инструкциям ниже, чтобы удалить его
1. Удалите пакеты NuGet, используйте следующие команды из консоли пакетов Nuget
2. После этого ваш файл web.config должен быть автоматически обновлен. Если это не так, найдите приведенный ниже код в
web.config
файле и, если он найден, удалите этот фрагмент кода.источник
Чистый и ремонт работал для меня!
источник
Copying file from "C:\Users\medmondson\Source\UK\Portal\Branches\v12\Source\packages\Microsoft.Net.Compilers.1.3.2\tools\csi.exe" to "bin\Debug\roslyn\csi.exe".
Вот более MSBuild способ сделать это.
Но я замечаю, что файлы roslyn также находятся в моем каталоге bin (а не в папке). Приложение, кажется, работает, хотя.
источник
Как отмечено в выпуске в проекте Roslyn на GitHub , решение (которое сработало для меня) заключается в простой выгрузке и перезагрузке проекта в Visual Studio.
Папка «bin \ roslyn» не создавалась при сборке или перестройке, пока я не перезагрузил проект.
источник
Я следовал за этими шагами, и это работало отлично
Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r
источник
Попробовав все исправления без сигары, я исправил это, обновив этот пакет Nuget в Visual Studios:
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Мой был с 1.0.0 до 2.0.0 для справки (ошибка больше не показывает)
источник
roslyn
папка создается в моем пути вывода. Я также не вижу ссылки на "roslyn" в моем csproj. Может быть ,Target Name="CopyRoslyn...
это вещь VS2015 и не нужна (версия) 2017 года у меня. Стоит отметить: так как я обновил DotnetCompilerPlatform перед тем, как поиграться с добавлением цели копирования (той, о которой я упоминал), у меня есть более чистый csproj.источник
Ctrl C
когда проверял филиал,git
и это испортило мой репо.git reset --hard
не сработало, поэтому мнеgit clean -xdf
и пришлось перестроить проект. Однако я столкнулся с этой ошибкой, поэтому я просто очистил и заново собрал проект, и он сработал для меня.Вам нужно установить Microsoft.CodeDom.Providers.DotNetCompilerPlatform.BinFix, специально созданный для этой ошибки
источник
Это переустанавливает все зависимости и файлы пакета (например, csc.exe)
источник
Таким образом, ответ Роба Кэннона по существу сработал для меня, но мне пришлось настроить несколько вариантов. В частности, мне пришлось удалить условие на цели, а также изменить атрибут Include, так как $ CscToolPath был пуст, когда проект создавался на нашем сервере сборки. Любопытно, что $ CscToolPath не был пустым при локальном запуске.
источник
Обновление пакетов nuget помогло мне. Щелкните правой кнопкой мыши решение> Управление пакетами NuGet для решения и обновите все пакеты, в частности: Microsoft.Net.Compilers и Microsoft.CodeDom.Providers.DotNetCompilerPlatform.
источник
Это известная проблема с Microsoft.CodeDom.Providers.DotNetCompilerPlatform 1.0.6. Понижение до 1.0.5 исправило это для меня.
источник
Для VS 2019 полностью удалите следующий узел:
источник
За комментарий Даниэля Нила выше:
Версия 1.0.3 пакета Nuget для Microsoft.CodeDom.Providers.DotNetCompilerPlatform работает для меня, но версия 1.0.6 вызывает ошибку в этом вопросе
Понижение до 1.0.3 решило эту проблему для меня.
источник
В моем случае у меня была проблема в Jenkins, когда он пытался развернуть его в Octopus со следующей ошибкой:
причина
Потратив некоторое время, я использовал внутренний разработанный компонент, который использовал
Microsoft.Net.Compilers
. Причина, по которой внутренний компонент использовалMicrosoft.Net.Compilers
эту проблему, заключалась в том, чтобы преодолеть эту проблему ( C #: генерировать недопустимую компиляцию выражений ) и была решена следующим образом ( Как использовать C # 7 с Visual Studio 2015? ). Это приводит к тому, что когда я устанавливал компонент в основную программу,Microsoft.Net.Compilers
он добавлялся автоматически.Решение
Мой обходной путь заключался в том, чтобы удалить следующее из нашего внутреннего компонента (после ответа @malikKhalil)
И выбрал компилятор C # 7 в Jenkins вместо C # 6 и пересоберите, чтобы убедиться, что все работает и собирается правильно.
Затем, наконец, в своей основной программе я попытался обновить свой внутренний компонент. И все, чем строить снова. Он построен без каких-либо проблем или проблем.
источник
У меня также была такая же проблема при запуске проекта. Вот шаги, которые я выполнил.
На этот раз я не увидел ту же ошибку. Это работает как ожидалось.
источник
В моем случае мне просто нужно было перейти в каталог bin в Visual Studio Solution Explorer (проект веб-приложения) и напрямую включить проект roslyn. Щелкнув правой кнопкой мыши по папке и выбрав Включить в проект. И снова проверьте решение, чтобы запустить процесс сборки.
Папка roslyn не была включена по умолчанию.
источник
Обновление
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
с 1.0.0 до 1.0.1 исправило это для меня.источник
Откройте файл проекта и удалите все ссылки с помощью команды Import Project = ".. \ packages \ Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0 ....
Откройте web.config и удалите все атрибуты компиляторов system.codedom
источник
Как уже было отмечено /programming/32780315#34391473 , быстрое исправление использовать менеджер пакетов,
Tools
>Nuget Package Manager
>Package Manager Console
, чтобы запуститьНо альтернативное решение (которое автоматически и бесшумно воссоздает ваши пакеты, если они отсутствуют) - удалить атрибут
Web.config
файла вашего проекта .(
Web.config
находится в том же каталоге, что и ваш.csproj
файл.)Откройте
Web.config
файл в текстовом редакторе (или внутри Visual Studio).- В теге
configuration
>system.codedom
>compilers
>compiler language="c#;cs;csharp"
, полностью удалитьtype
атрибут.Короче, удалите строку, которая начинается с
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft
.(Предположительно, такое же исправление работает и для Visual Basic, и для Csharp, но я не пробовал.)
Visual Studio позаботится обо всем остальном. Нет больше
Server Error in '/' Application
.В приведенном выше примере кода, который я указал в zip-файле, вы получите,
HTTP Error 403
когда нажмете Ctrl+ F5.Попробуйте заменить
http://localhost:64195
в вашем веб-браузере наhttp://localhost:64195/api/products
.Веб-API теперь отображается следующим образом:
В качестве провокации я попытался удалить весь
package
каталог моего решения Visual Studio.Он был автоматически и беззвучно воссоздан, как только я (пере) построил его.
И последнее, но не менее важное, вот код, который воспроизводит ошибку: http://schulze.000webhostapp.com/vs/SrvrErr-reproduce.zip (Первоначально из https://github.com/aspnet/AspNetDocs/tree/master/aspnet / web-api / обзор / расширенный / вызов-web-api-from-a-net-client / образец / сервер / ProductsApp )
источник
В моем случае, просто удалив все из папки bin и перекомпилировав, все сделал за меня.
источник
Если вы добавляете ASPNETCOMPILER для компиляции ваших представлений Razor в MVC, как в этом вопросе StackOverflow , то измените PhysicalPath, чтобы он размещал место, где находится пакет нулетов Roslyn (обычно указываемый через переменную $ CscToolPath ):
источник
Проблема с шаблонами VS2015 по умолчанию заключается в том, что компилятор фактически не копируется в
{outdir}_PublishedWebsites\tfr\bin\roslyn\
каталог, а скорее в{outdir}\roslyn\
каталог. Это, вероятно, отличается от вашей локальной среды, посколькуAppHarbor
создает приложения с использованием выходного каталога вместо создания решения «на месте».Чтобы исправить это, добавьте следующее к концу
.csproj
файла сразу после блока xml<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">...</Target>
Ссылка: https://support.appharbor.com/discussions/problems/78633-cant-build-aspnet-mvc-project-generated-from-vstudio-2015-enterprise
источник
В моем случае, аналогично Basim, был пакет NuGet, который сообщал компилятору, что нам нужен C # 6, а мы этого не делали.
Нам пришлось удалить пакет NuGet,
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
который затем удалил:<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net452" />
из файла packages.config<system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.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.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" /> </compilers> </system.codedom>
В
system.codedom
узле вы можете увидеть, почему он привел Рослин:compilerOptions="/langversion:6
источник
Удалите папку Bin в обозревателе решений и снова создайте решение. Это решило бы проблему
источник
У меня была такая же проблема при установке моего приложения на сервер, когда все работало отлично на localhost.
Ни одно из этих решений не сработало, у меня всегда была одна и та же ошибка:
Я закончил тем, что сделал это:
bin/roslyn
папкуpackages\Microsoft.Net.Compilers.1.3.2\tools
Это решило мою проблему.
источник
Перезагрузите Windows.
Это единственное решение, которое сработало для меня после попытки перестроить, удалить содержимое
bin
и перестроить, перезапустить Visual Studio.Это еще один пример того, насколько ужасны инструменты сборки C # / .NET.
Я думаю (после прочтения многих ответов) общий вывод заключается в том, что причина и решение этой проблемы в значительной степени зависит от настройки и проекта, поэтому, если один ответ не работает, попробуйте другой. Попробуйте неинтрузивные / разрушительные решения, такие как перезапуск Visual Studio, перезагрузка, перестройка и т. Д., ПЕРВЫЙ, прежде чем связываться с пакетами NuGet или переустановить инструменты разработки. Удачи!
(ПРИМЕЧАНИЕ. При использовании Visual Studio 2019 файл проекта изначально создавался в Visual Studio 2015. Может быть, это поможет кому-то разобраться в проблеме)
(РЕДАКТИРОВАТЬ: Может ли это быть вызвано не перезагрузкой после установки / изменения установки Visual Studio или обновления Visual Studio, когда программа установки предложит перезагрузить компьютер?)
источник
У меня есть webproject без файла csproj, и упомянутые здесь решения не работают для меня.
Изменение целевой платформы .NET, переустановка пакетов (
Update-Package -reinstall
), а затем сборка проекта работали для меня. Вы даже можете изменить целевой фреймворк после этой операции (сделайте так, чтобы вы переустанавливали пакеты nuget снова после).источник
update-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -reinstall