ASP.NET Web应用程序在Visual Studio 2019中发布失败。

3
我目前工作的应用程序是在VS 2015中开发的。我试图在VS 2019中运行相同的应用程序,建立成功,但是当尝试通过FTP /本地文件夹发布时失败了。
系统已经将一份诊断日志写入到.tmp 文件中。

System.AggregateException: 发生一个或多个错误。

System.Exception: 创建失败。请检查输出窗口获取更多细节。
--- 内部异常堆栈跟踪的结尾 ---

at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at Microsoft.WebTools.Publish.PublishService.VsWebProjectPublish.<>c__DisplayClass43_0.b__3()
at System.Threading.Tasks.Task`1.InnerInvoke()
at System.Threading.Tasks.Task.Execute()
--- 前面位置的堆栈跟踪结束 ---

at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Publish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext()

(内部异常 #0) System.Exception: 创建失败。请检查输出窗口获取更多细节。

System.Exception: 创建失败。请检查输出窗口获取更多细节。

以下是输出窗口中的详细信息。
1>------ Build started: Project: EmpDetails.BAL, Configuration: Release Any CPU ------
1>  EmpDetails.BAL -> C:\Test\Projects\source\repos\Project\EmpDetails.BAL\bin\Release\EmpDetails.BAL.dll
2>------ Build started: Project: EmployeeDetails, Configuration: Release Any CPU ------
2>  EmployeeDetails -> C:\Test\Projects\source\repos\Project\EmployeeDetails\bin\EmployeeDetails.dll
3>------ Publish started: Project: EmployeeDetails, Configuration: Release Any CPU ------
3>Connecting to C:\Test\Projects\ProjName\Published Website...
3>
========== Build: 2 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========
========== Publish: 0 succeeded, 1 failed, 0 skipped ==========

我谷歌了一下并尝试了以下方法:

  1. 以管理员身份运行Visual Studio。
  2. 给目标文件夹读写权限。
  3. 缩短URL路径。
  4. 在错误列表中设置“Build + Intellisense”。

但都没有起作用。

但是,当我在VS 2019中创建示例应用程序时,我能够发布它。

只是一个想法,我需要在Web.config文件中更改/更新任何内容吗?

我已经为解决这个问题苦苦挣扎了两天。如何解决?


5
它说“构建失败。请查看输出窗口以获取更多详细信息。”--你这样做了吗?从“输出”窗口中复制并粘贴文本到你的问题中。 - Andy
@Andy,正如你建议的那样,我已经更新了问题,并添加了输出窗口的详细信息。 - Krish
这里有一个解决方法。也许你可以参考一下。 - 大陸北方網友
你的原始信息显示构建失败,但输出窗口显示所有构建都成功了。你能确定是否有构建失败吗? - Nick.McDermaid
5个回答

1

最近我在使用Visual Studio 2022时遇到了一个类似的问题。在发布过程结束时,我收到了一个构建失败的错误,并要求我检查生成的temp文件以获取更多详细信息,如下所示:

 System.AggregateException: One or more errors occurred. ---> Microsoft.WebTools.Shared.Exceptions.WebToolsException: Build failed. Check the Output window for more details.
--- End of inner exception stack trace ---
---> (Inner Exception #0) Microsoft.WebTools.Shared.Exceptions.WebToolsException: Build failed. Check the Output window for more details.<---

Microsoft.WebTools.Shared.Exceptions.WebToolsException: Build failed. Check the Output window for more details.

===================

在输出窗口中,显示出了有关复制几个文件的问题,因为系统无法找到这些文件,尽管这些文件在目录中存在。
在我的情况下,问题是,这些文件的路径太长了。于是我将根文件夹缩短了,然后就成功发布了。
在 Windows API 中(以下段落中讨论的一些例外情况除外),路径的最大长度为 MAX_PATH,它被定义为 260 个字符。本地路径按以下顺序结构化:驱动器号、冒号、反斜杠、由反斜杠分隔的名称组件和终止空字符。例如,D 驱动器上的最大路径为“D:\某个 256 个字符的路径字符串”,其中“”代表当前系统代码页的不可见终止空字符。(此处使用 < > 仅用于视觉清晰度,不能成为有效的路径字符串的一部分)。
Microsoft 文档:最大路径长度限制

1

可能对某些人有帮助。当我发布我的应用程序时,我也遇到了同样的问题。奇怪的是,当我在.csproj文件中添加这个到我的包引用时,它解决了。

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

在添加了此软件包引用后,重新构建和发布即可正常工作。

0
在我的情况下,这个错误是因为一些存在于项目(csproj)中但已经被物理删除的文件。将它们从项目中移除并重新发布即可。
此外,在输出窗口中显示错误的描述。

0
在我的情况下,我有一个包含大文件的图像目录,所以我只需从解决方案中排除它并重新发布,然后它就可以成功发布了。

0
在我的情况下,我升级了Visual Studio到最新版本,并将我的解决方案更改为引用.Net Framework 8.0。
在发布时,我得到了与之前完全相同的错误。
我发布到了一个依赖于框架的可执行文件,这样做起作用了。然后我又切换回了一个自包含的可执行文件,现在它也可以工作了。
除此之外,没有其他改变。我本来打算尝试这篇帖子中的一些建议,但看来我不需要了。

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