构建失败。检查输出窗口获取更多详细信息- C#发布失败,但构建成功。

20

我正在尝试在 Visual Studio 2017 上发布 Web 应用程序。构建成功,但发布失败。当它失败时,会出现一个错误对话框,上面写着“发布遇到错误。构建失败。诊断日志已写入以下位置:..”

这是带有日志的文件内容:

System.AggregateException: 发生了一个或多个错误。 ---> System.Exception: 构建失败。请检查输出窗口以获取更多详细信息。 --- 内部异常堆栈跟踪的结尾 --- at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at Microsoft.VisualStudio.Web.Publish.PublishService.VsWebProjectPublish.<>c__DisplayClass41_0.<PublishAsync>b__2() 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.VisualStudio.ApplicationCapabilities.Publish.ViewModel.ProfileSelectorViewModel.<RunPublishTaskAsync>d__116.MoveNext() ---> (内部异常 #0) System.Exception: 构建失败。请检查输出窗口以获取更多详细信息。

我已经尝试以管理员身份运行该应用程序,但仍无法正常工作。我还搜索了Microsoft.Net.Compilers的引用,但在我的项目中找不到。


VS的错误部分显示了什么?你是否更改了应用程序目标框架版本,但发布配置文件的目标位置是错误的? - Edward Chopuryan
@EdwardChopuryan 错误部分根本没有说什么。而且,我没有改变目标框架。你所说的发布配置文件目标位置是错误的意思是什么?我不能发布到任何位置吗? - ayyyeee
19个回答

18

确保已选择“构建+智能感知”,而不是仅选择“仅构建”选项。这样,您可以看到其他可能隐藏在其中的错误。

输入图像描述


11

尝试以管理员身份打开Visual Studio。


6
请为iuser提供读写权限。右键单击文件夹并选择“属性”>“安全”选项卡,以发布您正在发布的文件夹。

4
这是因为管理员权限问题,需要以管理模式打开Visual Studio中的解决方案并发布解决方案,然后确保发布的文件夹具有读写权限。请按以上步骤操作即可解决问题。请注意不要改变原有的HTML标签格式。

让你的回答更具表现力,并附上示例。 - Hima

3

如果您使用管理员权限打开了vs,并且发布文件夹具有所有读/写权限,则可能需要从.csproj文件中删除缺失的引用。

  1. 卸载您的项目
  2. 右键单击编辑.csproj
  3. 删除所有不再被当前项目引用/使用的包含文件
  4. 重新加载您的项目
  5. 尝试再次发布...

我在.NET 6中遇到了类似的问题,我在ItemGroup标签中添加了两次项目。 - amin

2
这是user11952046的答案(在我进行了许多试验后看到的),并包含更多详细信息。
我发现在意识到我的发布配置文件使用的是.NET Core 3.0而不是3.1时,遇到了相同的错误(所有程序集都针对3.1)。不确定它是否相关,但我还将db上下文+迁移从包含Startup.cs的主程序集中移动了出来。
我的开发环境是VS2019。
1. 双重检查在本地IIS上的发布是否有效。这需要提升VS 2019(管理员)权限。 2. 在提升权限的情况下,我发布到目标Web服务器(IIS),并按预期工作。 3. 关闭并重新启动,然后再次发布,它就可以工作了。
我不确定发生了什么,但我猜测发布需要一次性更改某些需要提升权限的文件。
要点:至少使用以管理员身份启动的VS2019进行一次发布,然后您就可以使用非管理员模式进行发布。

1
这对我有用-之前已经发表过许多次,但是尝试将一些无关紧要的代码更新发布到本地IIS时出现了错误。 “使用VS2019作为管理员启动一个发布”就是答案。 VS2019 16.4.5 .NET Core 3.1 Web API与Angular SPA。 - Alex Cooper

2

我已将项目框架从4.0升级到4.7.2,在尝试发布服务时遇到了相同的问题,通过在项目的.cproj文件中添加以下标签解决:

卸载项目 >> 编辑项目文件

在以下行中更新ToolsVersion="15.0"

<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

在上述行之后添加以下行:
 <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />


      <PropertyGroup>   
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>  
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> 
  </PropertyGroup>

在下面的行之前添加上面的内容
  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

在上述内容后添加以下一行。
   <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false"/>


这个解决方案对我很有用,我能够在将框架从4.0升级到4.7.2后发布wcf项目。

1
我遇到了相同的“构建失败”问题。我所做的只是在“Entity Framework Migrations”下启用了AppDbContext并提供了连接字符串,以解决这个问题。

screenshot


0

我曾经遇到过类似的问题,即在调试模式下可以运行我的项目,但每当我想要发布时,就会遇到构建失败的问题。

我认为这将有助于那些遇到同样问题的人

如果您的项目路径很长,请尝试将项目移动到较短的路径。以下是一个示例,将项目路径从C:\Users\xxxx\xxxx\xxxx\project1更改为C:\Users\xxxx\project1


对我来说起作用了,我将我的项目和发布位置移动到最短的路径。 - gm arif

0

链接很有帮助,但最好在帖子中也包含解决方案。正如你所知,所有的链接最终都会失效。 - alexherm
@alexherm 确实如此! 您可以通过在菜单“工具”->“选项”->“ReSharper”中使用“暂停”按钮来禁用ReSharper 5及更高版本。 - Pramod Kumar

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