我正在尝试在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 参考,但它不在我的项目中。
答案 0 :(得分:2)
这是user11952046
的答案(我在VS进行了无数次试验后看到了),并提供了更多详细信息。
在意识到我的发布配置文件使用.NET Core 3.0作为目标框架而不是3.1(所有程序集都针对3.1)之后,我偶然发现了相同的错误。不确定是否相关,但是我还从主要程序集(包含Startup.cs)中移走了数据库上下文和迁移。
我的开发环境是VS2019。
再次检查发布是否可以在本地IIS上运行。这就需要提升VS 2019(管理员)。
在提升的同时,我已经在目标Web服务器(IIS)上发布了它,并且按预期运行。
关闭并重新启动,没有升高,然后再次发布,就可以了。
我不确定发生了什么,但是我想publish有一个一次性的要求来更改一些需要提升的文件。
tl; dr -使用以管理员身份启动的VS2019进行至少一个发布,然后您可以使用非管理员模式发布。
答案 1 :(得分:1)
尝试以管理员身份打开 Visual Studio。
答案 2 :(得分:1)
请通过右键单击文件夹>“属性”>“安全性”选项卡
,为iuser提供您要在其中发布文件夹的读写权限。答案 3 :(得分:1)
如果您使用管理员权限打开 vs 并且您的发布文件夹具有所有读/写权限,您可能需要从 .csproj
文件中删除丢失的引用
.csproj
答案 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)
答案 9 :(得分:0)
此问题有很多原因。我已经配置了IIS网站,以及用户的正确权限。显然,该项目已在本地计算机上成功构建。问题是我在VS发布配置文件的“站点路径”部分添加了绝对Windows路径。留空!
答案 10 :(得分:0)
在尝试发布到Azure应用服务时,我遇到了同样的问题。 对我来说,关闭Fiddler可以解决问题。
答案 11 :(得分:0)
这更有可能是因为您没有对要发布的特定文件夹的完全控制权 脚步: 1)右键单击您要发布的文件夹 2)安全 3)点击“编辑”,然后添加您当前的用户登录名,例如(domain \ username) 4)单击完全控制复选框并保存 5)然后尝试发布
答案 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
并提供连接字符串
答案 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中以管理模式打开解决方案,然后发布将起作用的解决方案,并确保已发布的文件夹具有读写权限。