WPF .NET Core 3.1应用程序发布单个文件(发布)失败

11

我试图将一个针对.NET Core 3.1的WPF应用程序(发布到文件夹)使用单文件发布,并定位于win-x86。该应用程序在Debug模式下可以成功发布,但在Release模式下失败。如果我取消选择“生成单个文件”,则发布就可以正常工作。我正在使用Visual Studio 2019(16.4.1和预览版16.5.1)。

当我进行发布时,会出现以下通用错误:

发布遇到了错误。发布遇到了错误。我们无法确定错误的原因。请检查输出日志以获取更多详细信息。

诊断日志已写入以下位置:"C:\Users\username\AppData\Local\Temp\tmpD176.tmp"

还有一个不是很有帮助的日志文件:

System.AggregateException: One or more errors occurred. ---> System.Exception: Publish has encountered an error. We were unable to determine the cause of the error. Check the output log for more details. 
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at Microsoft.Publish.Framework.Model.DefaultPublishSteps.<>c__DisplayClass26_0.<IsBuildCompletedSuccessfully>b__2()
   at System.Threading.Tasks.Task`1.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Publish.Framework.Model.DefaultPublishSteps.<DefaultCorePublishStep>d__23.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Publish.Framework.ViewModel.ProfileSelectorViewModel.<RunPublishTaskAsync>d__156.MoveNext()
---> (Inner Exception #0) System.Exception: Publish has encountered an error. We were unable to determine the cause of the error. Check the output log for more details. <---

System.Exception: Publish has encountered an error. We were unable to determine the cause of the error. Check the output log for more details. 

我找到了这个问题,它暗示可能是由于Visual Studio超时引起的问题,尽管该问题与Azure有关。当我尝试使用ReadyToRun发布时,我还发现了这个Github问题也显示了类似的问题。

几周前,我们进行了成功的发布,并进行了最少量的更改。这可能是Visual Studio的问题吗?我意识到这可能是参考和NuGet软件包的问题,但我真的不知道从哪里开始解决这个问题... 发布没有提供任何有用信息来确定可能导致此问题的原因。有什么想法吗?


3
你尝试过使用dotnet命令行界面来发布它吗? - mm8
1
@mm8 谢谢,这提供了更多信息,但仍未解决问题。我怀疑问题可能出在 Visual Studio 上。 - VirtualValentin
6个回答

5

我有一款WPF应用程序遇到了同样的问题:

在VS2019 16.3和dotnet Core 3.0下发布工作正常。

升级到VS2019 16.4.1和dotnet Core 3.1后,发布失败,如上所述。

唯一的区别是我目标为X64。

尝试多次编辑发布FolderProfile(没有一个修复问题),最终我删除了FolderProfile并创建了一个新的,以定位到不同的文件夹。

现在发布又可以正常了。

希望这能帮到您。


1
不知怎么的,这对我有用..但只有有时候。回到 .net core 3.0 后,我能够发布,但当我在 64 和 86 之间切换运行时时,它遇到了相同的问题。切换回来也再次遇到了相同的错误。我正在尝试进行一些调试以了解可能触发此问题的原因,但现在似乎无法重现该错误。对我有用的是清除我的 NuGet 缓存(如果需要,请删除 nuget 文件夹)。我将继续调查,如果我能追踪到问题并重现它,我将在此处提到。 - VirtualValentin
1
进一步更新:仍然存在后续构建的间歇性问题。解决方案:删除 bin、obj 和 publish 文件夹。然后重新构建并创建新的发布文件夹。然后似乎可以成功发布。 - MaxTheCoder

2

对我来说,这个错误与自定义NuGet源有关,例如Azure DevOps Artifacts。 有时构建脚本尝试从Azure DevOps还原nugets,但会失败并产生(未经授权的)错误,这会导致帖子中的错误。

暂时禁用自定义NuGet源,使发布工作正常,无论使用哪些选项,如单文件。


2
我遇到了同样的问题,但我认为我的问题与设置“PublishSingleFile”时项目甚至无法构建有关。
我在他们的 GitHub 问题帖子中添加了一个 评论,假设这是他们端的一个错误,因为 .NET Core 3.0 对我来说发布得很好。

1
我有同样的问题,在我的情况下,解决方案是从.csproj文件中删除一些X86系统的dll:
<ItemGroup>
    <Reference Include="System.Management">
      <HintPath>..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Management.dll</HintPath>
    </Reference>
  </ItemGroup> 

0

我在发布我的应用程序时也遇到了同样的问题。奇怪的是,当我将这个添加到我的.csproj文件中的包引用时,问题就解决了。

    <PackageReference Include="EFCore.BulkExtensions" Version="5.2.8" />

在添加了这个包引用之后,当我重新构建并发布时,它就可以工作了。

0
值得检查您的互联网连接。我曾经在企业防火墙后面发布自包含部署时遇到问题。和你一样,出现了同样的错误:

发布遇到错误。我们无法确定错误的原因。请检查输出日志以获取更多详细信息。

而在那个日志文件中没有更多有用的信息。在断开 VPN 连接后,应用程序成功发布且没有出现任何错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接