F #: ошибка времени выполнения перед вызовом точки входа

#f#

#f#

Вопрос:

Код проекта: https://github.com/sharpninja/csproj-convert

Я пытаюсь обновить старый проект F # до .Net 5 и получаю эту ошибку:

 PS C:GitHubcsproj-convert> dotnet run
System.ComponentModel.Win32Exception (2): The system cannot find the file specified.
   at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at Microsoft.DotNet.Cli.Utils.Command.Execute(Action`1 processStarted)
   at Microsoft.DotNet.Cli.Utils.Command.Execute()
   at Microsoft.DotNet.Tools.Run.RunCommand.Execute()
   at Microsoft.DotNet.Tools.Run.RunCommand.Run(String[] args)
   at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, ITelemetry telemetryClient)
   at Microsoft.DotNet.Cli.Program.Main(String[] args)
 

Есть идеи, что я делаю не так?

Ответ №1:

Проблема в том, что это очень старый проект, в котором указаны более старые компоненты (более 3 лет назад), которые просто несовместимы с .NET 5. Удалите следующие ссылки на пакеты:

     <PackageReference Include="FSharp.Core" Version="5.0.0" />
    <PackageReference Include="FSharp.NET.Sdk" Version="1.0.5" />
 

Первый не является необходимым (и фактически указан неправильно; Update используется для переопределения ссылки, введенной по умолчанию для любого проекта F #). Второй — это старый инструмент, который запускает компилятор несколько лет назад, который использовался в .NET Core 1.0 дней.

Убедитесь, что вы также удалили свою obj папку, чтобы она повторно сгенерировала project.assets.json файл при сборке, и все должно быть готово.