ASP.NET Web 应用程序无法在 Visual Studio 2019 中发布

问题描述 投票:0回答:7

我现在正在工作的应用程序是在 VS 2015 中开发的。我尝试在 VS 2019 中运行相同的应用程序,构建成功,但在尝试通过 FTP / 发布到本地文件夹时失败。

诊断日志已写入以下位置的 .tmp 文件。

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

System.Exception:构建失败。检查输出窗口以获取更多详细信息。
--- 内部异常堆栈跟踪结束 ---

在 System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
在System.Threading.Tasks.Task.Wait(Int32毫秒超时,CancellationToken取消令牌)
在 Microsoft.WebTools.Publish.PublishService.VsWebProjectPublish.<>c__DisplayClass43_0.b__3()
在 System.Threading.Tasks.Task`1.InnerInvoke()
在 System.Threading.Tasks.Task.Execute()
--- 从先前抛出异常的位置开始的堆栈跟踪结束 ---

在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)
在 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 文件中的任何内容。

过去两天我一直在努力解决这个问题。怎么解决?

c# asp.net visual-studio visual-studio-2019 publish
7个回答
2
投票

最近我在 Visual Studio 2022 中遇到了类似的问题。在

publish
过程结束时,我收到构建失败的错误,并要求我检查生成的
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.

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

在输出窗口中,显示复制一些文件时出现问题,因为即使文件位于目录中,系统也无法找到这些文件。

就我而言,问题是,这些文件的路径太长。所以我更改了根文件夹t并且它发布成功了。

在 Windows API 中(除了以下段落中讨论的一些例外情况),路径的最大长度是 MAX_PATH,定义为 260 个字符。本地路径按以下顺序构造:驱动器号、冒号、反斜杠、由反斜杠分隔的名称组件以及终止空字符。例如,驱动器 D 上的最大路径是“D:\some 256-character path string”,其中“”表示当前系统代码页的不可见终止空字符。 (此处使用字符 < > 是为了视觉清晰,并且不能是有效路径字符串的一部分。)

Microsoft 文档:最大路径长度限制


1
投票

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

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

添加此包引用后,当我重建并发布时,它正在工作。


0
投票

在我的例子中,这个错误是因为项目(csproj)中存在一些文件但被物理删除。将它们从项目中删除并再次发布。

此外,在输出窗口中显示错误的描述。


0
投票

在我的例子中,我有图像目录,其中包含大文件,所以我只需从解决方案中排除并重新发布,然后它就可以成功发布。


0
投票

就我而言,我将 Visual Studio 升级到最新版本,并将解决方案更改为引用 .Net Framework 8.0。

我在发布时遇到了与之前完全相同的错误。

我发布了一个依赖于框架的可执行文件,并且这有效。然后我切换回独立的可执行文件,现在它可以工作了。

其他一切都没有改变。我本来想尝试这篇文章中的一些建议,但似乎不需要。


0
投票

对我来说,问题是选择 Linux-x64 平台,因为我想发布到基于 Linux 的 Azure Web 应用程序。

回到便携式或选择 Windows 运行时和目标可以解决问题。

还值得检查解决方案中依赖项目的输出类型是类库而不是其他


0
投票

对我来说,这是在 ASP.Net 项目中从 .net7 切换到 .net 8 后发生的。尝试将项目发布到 IIS 时发生错误。解决方案是在“发布”选项卡的发布配置(.pubxml)中切换“目标框架”。

© www.soinside.com 2019 - 2024. All rights reserved.