【发布时间】:2022-08-17 16:28:53
【问题描述】:
在将应用程序从 netcoreapp3.1 升级到 net6.0 后尝试通过命令行发布我的应用程序时,出现以下错误:
dotnet cake build/build.cake --target=Publish --Verbosity=Diagnostic --runtimeIdentifier=win-x64
结果:
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 的属性组:
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<OutputType>Exe</OutputType>
<AssemblyName>xxxxx.xxxx.xxxxxx</AssemblyName>
<RuntimeIdentifiers>win-x64;linux-x64</RuntimeIdentifiers>
</PropertyGroup>
在 operations.cake 中发布Artifacts 代码:
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,则发布命令正在工作并在 Artifacts 中创建应用程序和 dll 文件。但是我们需要在一个 .exe 文件中发布应用程序。任何帮助,将不胜感激。
-
如果将
NoBuild和NoRestore设置为false,有什么区别吗?如果您使用最新的 .NET 6 SDK (ATM 6.0.302) 会有什么不同吗 -
不,它仍然会产生相同的错误。
-
@Subhankar 是否在
C:\\FolderHost\\obj\\Release\\net6.0\\win-x64`? Does publish work on the commandline when you rundotnet 文件夹中手动创建了另一个 exe?
标签: .net runtime .net-6.0 cakebuild