首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从netcoreapp3.1升级到net6.0的PublishSingleFile错误

从netcoreapp3.1升级到net6.0的PublishSingleFile错误
EN

Stack Overflow用户
提问于 2022-07-20 12:29:40
回答 2查看 220关注 0票数 0

在将我的应用程序从netcoreapp3.1升级到net6.0之后,尝试通过命令行发布我的应用程序时,我得到了下面的错误:

dotnet cake build/build.cake --target=Publish --Verbosity=Diagnostic --runtimeIdentifier=win-x64

结果:

代码语言:javascript
复制
C:\ProgramFiles\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Publish.targets(898,5): error MSB4018: The "GenerateBundle" task failed unexpectedly. [C:\FolderHost\ProjectFileHost.csproj]
C:\ProgramFiles\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Publish.targets(898,5): error MSB4018: System.IO.FileNotFoundException: Could not find file 'C:\FolderHost\obj\Release\net6.0\win-x64\singlefilehost.exe'. [C:\FolderHost\ProjectFileHost.csproj]
C:\ProgramFiles\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Publish.targets(898,5): error MSB4018: File name: 'C:\FolderHost\obj\Release\net6.0\win-x64\singlefilehost.exe' [C:\\FolderHost\ProjectFileHost.csproj]
C:\ProgramFiles\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Publish.targets(898,5): error MSB4018:    at System.IO.FileSystem.CopyFile(String sourceFullPath, String destFullPath, Boolean overwrite) [C:\FolderHost\ProjectFileHost.csproj]
C:\ProgramFiles\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Publish.targets(898,5): error MSB4018:    at System.IO.File.Copy(String sourceFileName, String destFileName, Boolean overwrite) [C:\FolderHost\ProjectFileHost.csproj]
C:\ProgramFiles\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Publish.targets(898,5): error MSB4018:    at Microsoft.NET.HostModel.AppHost.BinaryUtils.CopyFile(String sourcePath, String destinationPath) [C:\FolderHost\ProjectFileHost.csproj]
C:\ProgramFiles\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Publish.targets(898,5): error MSB4018:    at Microsoft.NET.HostModel.Bundle.Bundler.GenerateBundle(IReadOnlyList`1 fileSpecs) [C:\FolderHost\ProjectFileHost.csproj]
C:\ProgramFiles\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Publish.targets(898,5): error MSB4018:    at Microsoft.NET.Build.Tasks.GenerateBundle.ExecuteCore() [C:\FolderHost\ProjectFileHost.csproj]
C:\ProgramFiles\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Publish.targets(898,5): error MSB4018:    at Microsoft.NET.Build.Tasks.TaskBase.Execute() [C:\FolderHost\ProjectFileHost.csproj]
C:\ProgramFiles\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Publish.targets(898,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() [C:\FolderHost\ProjectFileHost.csproj]
C:\ProgramFiles\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Publish.targets(898,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask) [C:\FolderHost\ProjectFileHost.csproj]
An error occurred when executing task 'Publish'.
Error: .NET CLI: Process returned an error (exit code 1).

ProjectFileHost.csproj财产组:

代码语言:javascript
复制
<PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <OutputType>Exe</OutputType>
    <AssemblyName>xxxxx.xxxx.xxxxxx</AssemblyName>
    <RuntimeIdentifiers>win-x64;linux-x64</RuntimeIdentifiers>
</PropertyGroup>

PublishArtifacts代码( operations.cake ):

代码语言:javascript
复制
void PublishArtifact(string projPath, string runtime, string artfDir)
{
  DotNetCorePublishSettings pub = new DotNetCorePublishSettings()
  {
     Framework = "net6.0",
     Runtime =  runtime,
     PublishSingleFile = true,
     Configuration =  "Release",
     NoBuild = true,
     NoRestore = true,
     OutputDir = artfDir + "/" + runtime
  };

  DotNetCorePublish(projPath, pub);
}

如果我们创建PublishSingleFile = false,那么发布命令将在工件中运行并创建应用程序和dll文件。但是我们需要在一个.exe文件中发布这个应用程序。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2022-07-20 12:50:03

这不是蛋糕错误,而是msbuild错误。不存在要部署的文件C:\FolderHost\obj\Release\net6.0\win-x64\singlefilehost.exe

我的猜测是,由于您已经在您的NoBuild = true中设置了DotNetCorePublishSettings,所以项目没有预先构建(在所需的配置中)。

您可以设置NoBuild = false, NoRestore = false,也可以在发布之前运行DotNet[Core]Build()

另外,请注意,DotNetCore***别名已被废弃,以支持新的DotNet***别名蛋糕2.0.0

票数 1
EN

Stack Overflow用户

发布于 2022-08-17 08:28:53

将PublishSingleFile设置为true在ProjectFileHost.csproj属性组中创建了singlefilehost.exe

代码语言:javascript
复制
<PublishSingleFile>true</PublishSingleFile>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73051676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档