c#发布失败,但构建成功

时间:2018-07-27 22:01:53

标签: c# visual-studio build publish

我正在尝试在Visual Studio 2017上发布Web应用程序。构建成功,但发布失败。失败时,将显示一个错误对话框,提示“发布遇到错误。已建立文件。诊断日志已写入以下位置:..”

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

System.AggregateException: One or more errors occurred. ---> System.Exception: Build failed. Check the Output window 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.VisualStudio.Web.Publish.PublishService.VsWebProjectPublish.<>c__DisplayClass41_0.<PublishAsync>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.VisualStudio.ApplicationCapabilities.Publish.ViewModel.ProfileSelectorViewModel.<RunPublishTaskAsync>d__116.MoveNext() ---> (Inner Exception #0) System.Exception: Build failed. Check the Output window for more details.

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

17 个答案:

答案 0 :(得分:2)

这是user11952046的答案(我在VS进行了无数次试验后看到了),并提供了更多详细信息。

在意识到我的发布配置文件使用.NET Core 3.0作为目标框架而不是3.1(所有程序集都针对3.1)之后,我偶然发现了相同的错误。不确定是否相关,但是我还从主要程序集(包含Startup.cs)中移走了数据库上下文和迁移。

我的开发环境是VS2019。

  1. 再次检查发布是否可以在本地IIS上运行。这就需要提升VS 2019(管理员)。

  2. 在提升的同时,我已经在目标Web服务器(IIS)上发布了它,并且按预期运行。

  3. 关闭并重新启动,没有升高,然后再次发布,就可以了。

我不确定发生了什么,但是我想publish有一个一次性的要求来更改一些需要提升的文件。

tl; dr -使用以管理员身份启动的VS2019进行至少一个发布,然后您可以使用非管理员模式发布。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

请通过右键单击文件夹>“属性”>“安全性”选项卡

,为iuser提供您要在其中发布文件夹的读写权限。

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

禁用Resharper为我解决了这个问题!

这里是如何禁用它 How can I disable ReSharper in Visual Studio and enable it again?

也有一些博客声称更新MSBILD工具将解决此问题。 对我来说,只是禁用Resharper即可。

https://www.visualstudio.com/downloads/#build-tools-for-visual-studio-2017下载最新版本的MSBUILD工具,运行它,选择“修改”,然后选择“ Web开发构建工具”和“ .NET Core构建工具”。

答案 5 :(得分:0)

下载MSBUILD工具的LastVersion。 生成您的项目,然后在错误列表中选择Build + IntelliSense并显示错误消息(如果存在)。 和下载Nuget的System.Reflection.Emit 再试一次发布您的项目。

答案 6 :(得分:0)

看看位于YourProject \ Properties \ PublishProfiles中的FolderProfile.pubxml文件,并确保为术语配置了正确的版本。

答案 7 :(得分:0)

我遇到了类似的问题,可以在调试模式下运行项目,但是每当我要发布时,我都会遇到构建失败的问题。

我认为这将帮助面临相同问题的人

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

答案 8 :(得分:0)

确保选择了Build + Intellisense,而不仅仅是Build Only。 这样一来,您可以看到其他可能隐藏在那里的错误。

enter image description here

答案 9 :(得分:0)

此问题有很多原因。我已经配置了IIS网站,以及用户的正确权限。显然,该项目已在本地计算机上成功构建。问题是我在VS发布配置文件的“站点路径”部分添加了绝对Windows路径。留空!

答案 10 :(得分:0)

在尝试发布到Azure应用服务时,我遇到了同样的问题。 对我来说,关闭Fiddler可以解决问题。

答案 11 :(得分:0)

这更有可能是因为您没有对要发布的特定文件夹的完全控制权 脚步: 1)右键单击您要发布的文件夹 2)安全 3)点击“编辑”,然后添加您当前的用户登录名,例如(domain \ username) 4)单击完全控制复选框并保存 5)然后尝试发布

enter image description here

答案 12 :(得分:0)

我已将项目框架格式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项目

答案 13 :(得分:0)

我遇到了同样的“构建失败”问题。

我要解决的所有事情是在AppDbContext下启用Entity Framework Migrations并提供连接字符串

screenshot

答案 14 :(得分:0)

发布时出现错误,我遇到了同样的问题:

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

解决方案:在文件资源管理器中,发布的共享驱动器目标已断开连接。重新连接驱动器后,错误消失,发布继续进行。

答案 15 :(得分:0)

实际上,许多原因都可能导致此问题。在ASP.NET论坛中有解决此问题的非常有用的技巧。您可以按照以下步骤。 Here是步骤。

答案 16 :(得分:-2)

这是由于具有管理员权限,请在Visual Studio中以管理模式打开解决方案,然后发布将起作用的解决方案,并确保已发布的文件夹具有读写权限。