【问题标题】:The CreateAppHost task failed unexpectedly. MSB4018CreateAppHost 任务意外失败。 MSB4018
【发布时间】:2020-07-18 22:06:49
【问题描述】:

当我尝试构建我的 ASP.NET Core 项目时,我在 Visual Studio 2019 中继续收到此错误消息。 当我第二次构建它时,错误消失了。

有谁知道这个错误是什么意思以及如何摆脱它?

谢谢!

<CreateAppHost AppHostSourcePath="$(AppHostSourcePath)"
                   AppHostDestinationPath="$(AppHostIntermediatePath)"
                   AppBinaryName="$(AssemblyName)$(TargetExt)"
                   IntermediateAssembly="@(IntermediateAssembly->'%(FullPath)')"
                   WindowsGraphicalUserInterface="$(_UseWindowsGraphicalUserInterface)"
                   Retries="$(CopyRetryCount)"
                   RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
                   />

【问题讨论】:

  • 更多信息可以参考这里:github.com/dotnet/sdk/issues/10708
  • 在此线程上:github.com/dotnet/runtime/issues/3832 主要确定是 DropBox 和 GoogleDrive 等应用程序访问该文件。就我而言,我有时会在 DropBox 文件夹中进行开发。重建通常有效。可能某些 AV 正在监视文件并短暂锁定文件以进行扫描。
  • 你的项目是什么版本的?最新版本已修复此问题,您可以升级项目解决问题。

标签: visual-studio asp.net-core visual-studio-2019


【解决方案1】:

尝试使用“以管理员身份”选项运行 Visual Studio。

完成构建所需的某些文件可能需要管理员权限才能访问它们。通常运行的 Visual Studio 没有足够的权限来访问它们

【讨论】:

    【解决方案2】:

    我注意到我的错误还指出: System.UnauthorizedAccessException:对路径“...\obj\Release\netcoreapp3.1\apphost.exe”的访问被拒绝。

    删除了 obj 文件夹并重建解决方案为我解决了问题。 谢谢。

    【讨论】:

      【解决方案3】:

      我遇到了类似的问题。我的 ASP.NET Core 应用程序的错误消息是

      error MSB4018: The "CreateAppHost" task failed unexpectedly.
      error MSB4018: System.MissingMethodException: Method not found: 'Void Microsoft.NET.HostModel.AppHost.HostWriter.CreateAppHost(...
      

      我将问题追溯到环境变量MSBuildSDKsPath,它指向较旧的 SDK 版本。使用export MSBuildSDKsPath= 取消设置变量后,问题得到解决。或者,将变量设置为最新的 SDK 也可以:export MSBuildSDKsPath=C:\Program Files\dotnet\sdk\6.0.100-rc.2.21505.57\Sdks(只是一个示例)。

      我不记得为什么我首先设置变量,并且消除它似乎也没有伤害,我只是将其删除。看来,一般来说,只是没有必要。

      【讨论】:

        【解决方案4】:

        如果还有人遇到此问题,请停止病毒和威胁防护 -> 实时防护,解决问题。

        编辑 从控制台使用 dotnet 构建

        【讨论】:

        • 感谢您提供如此简单的解决方案。
        • “让您的设备易受攻击”...这不是一个合适的解决方案。
        【解决方案5】:

        它发生在 docker 上的dotnet build (dotnet-sdk-3.1, dist:CentOS 8.1)。

        日志:

        /usr/lib64/dotnet/sdk/3.1.111/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(393,5): error MSB4018: The "CreateAppHost" task failed unexpectedly. [<PathToCsproj>.csproj]
         System.IO.IOException: The process cannot access the file '/<PathToCsprojDir>/obj/Debug/netcoreapp3.1/<AssemblyName>' because it is being used by another process. [<PathToCsproj>.csproj]
            at System.IO.FileStream.Init(FileMode mode, FileShare share, String originalPath) in /_/src/System.Private.CoreLib/shared/System/IO/FileStream.Unix.cs:line 86 [<PathToCsproj>.csproj]
            at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) in /_/src/System.Private.CoreLib/shared/System/IO/FileStream.cs:line 244 [<PathToCsproj>.csproj]
            at System.IO.FileSystem.CopyFile(String sourceFullPath, String destFullPath, Boolean overwrite) in /_/src/System.IO.FileSystem/src/System/IO/FileSystem.Unix.cs:line 25 [<PathToCsproj>.csproj]
            at System.IO.File.Copy(String sourceFileName, String destFileName, Boolean overwrite) in /_/src/System.IO.FileSystem/src/System/IO/File.cs:line 77 [<PathToCsproj>.csproj]
            at Microsoft.NET.HostModel.AppHost.BinaryUtils.CopyFile(String sourcePath, String destinationPath) [<PathToCsproj>.csproj]
            at Microsoft.NET.HostModel.AppHost.HostWriter.CreateAppHost(String appHostSourceFilePath, String appHostDestinationFilePath, String appBinaryFilePath, Boolean windowsGraphicalUserInterface, String assemblyToCopyResorcesFrom) [<PathToCsproj>.csproj]
            at Microsoft.NET.Build.Tasks.CreateAppHost.ExecuteCore() [<PathToCsproj>.csproj]
            at Microsoft.NET.Build.Tasks.TaskBase.Execute() [<PathToCsproj>.csproj]
            at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() [<PathToCsproj>.csproj]
            at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask) [<PathToCsproj>.csproj]
        

        解决方案:

        添加CopyRetryCount 环境变量。 之后,它会发出警告。

        export CopyRetryCount=100
        dotnet build --verbosity quiet -c Debug
        

        致谢:

        这个答案可能是题外话,但它有类似的信息。 这个问题有解决我的问题的参数,这非常有帮助。谢谢。

        【讨论】:

          【解决方案6】:

          这种情况偶尔会发生。显然,VS 有时会失去访问 Obj 文件中某些文件的权限。 有太多可能的解决方案:

          1. 关闭VS并以管理员身份重新启动,以便再次授予权限

          1. 关闭 VS > 删除项目 Obj 文件夹 > 打开 VS > 重建项目(如果 VS 没有自动执行)

          【讨论】:

            【解决方案7】:

            为我解决的问题是删除所有 binout 文件夹。

            这是由于使用 VSCode 作为管理员造成的。显然,在我以管理员身份使用 VSCode 构建解决方案后,有些人会因为这个问题而搞砸了。

            【讨论】:

              【解决方案8】:

              对于在 dotnet core 中运行的应用程序,启动命令 dotnet clean 以清理所有二进制文件。然后构建 dotnet,一切顺利!

              【讨论】:

                【解决方案9】:

                由于系统下载了多个sdk版本。

                从 c:/ 中删除它

                然后它消除错误

                【讨论】:

                  猜你喜欢
                  • 2021-04-30
                  • 2021-03-22
                  • 2021-02-25
                  • 1970-01-01
                  • 1970-01-01
                  • 2023-01-03
                  • 2011-10-06
                  • 1970-01-01
                  • 2016-02-23
                  相关资源
                  最近更新 更多