当我尝试构建 ASP.NET Core 项目时,我继续在 Visual Studio 2019 中收到此错误消息。 当我第二次构建它时,错误消失了。
有谁知道这个错误意味着什么以及如何消除它?
谢谢!
<CreateAppHost AppHostSourcePath="$(AppHostSourcePath)"
AppHostDestinationPath="$(AppHostIntermediatePath)"
AppBinaryName="$(AssemblyName)$(TargetExt)"
IntermediateAssembly="@(IntermediateAssembly->'%(FullPath)')"
WindowsGraphicalUserInterface="$(_UseWindowsGraphicalUserInterface)"
Retries="$(CopyRetryCount)"
RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
/>
我也有类似的问题。我的 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
(仅作为示例)。
我不记得为什么我首先设置该变量,并且删除它似乎也没有什么坏处,我只是删除了它。看来一般来说,只是没有必要。
我注意到我的错误还指出: System.UnauthorizedAccessException:访问路径 '...\obj\Release etcoreapp3.1 pphost.exe'被拒绝。
删除 obj 文件夹并重建解决方案为我解决了问题。 谢谢。
对我来说修复的是删除所有
bin
和 out
文件夹。
这是由于使用 VSCode 作为管理员造成的。显然,在我使用 VSCode 作为管理员构建解决方案后,有些问题导致了这个问题。
对于在 dotnet core 中运行的应用程序,触发命令
dotnet clean
来清理所有二进制文件。然后 dotnet build 就可以了!
它发生在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
致谢:
这个答案可能偏离主题,但它有类似的信息。 这个问题有参数来解决我的问题,这非常有帮助。谢谢你。
我在共享目录中运行代码,将文件夹移出共享目录并再次运行 dotnet 解决了错误。
就我而言,文件夹路径太长。我只是将我的项目转移到一个短路径目录,即
D:/MyProject1
并且它可以工作。
由于系统下载了多个sdk版本。
将其从 c:/
中删除然后它会删除错误