发布

时间:2018-03-22 16:51:39

标签: c# azure asp.net-core publish

为了在大型Web应用程序中拆分单独子项目的控制器,我创建了另一个ASP.NET Core 2 Web项目,并从我的主Web项目中引用它。 这些项目使用在完整的.NET Framework 4.7.1上运行的ASP.NET Core。

在第二个项目中,我为服务注册添加了额外的控制器和扩展方法。

我只需要将第二个Web项目的输出类型更改为类库,并且在开发过程中一切正常。

但是,当我尝试将Web应用程序发布到azure时,我收到此错误:

Metadata file 'E:\Dev\MyProject\MyProject.SecondWebProject\bin\Release\net471\win7-x86\MyProject.SecondWebProject.dll' could not be found   

消息框指出日志文件中提供了其他信息。 此日志文件中的内容为:

System.AggregateException: One or more errors occurred. ---> System.Exception: Publish failed due to build errors. Check the error list 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__DisplayClass40_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__88.MoveNext()
---> (Inner Exception #0) System.Exception: Publish failed due to build errors. Check the error list for more details.<---

我的第二个web项目的输出不会被复制到\ win7-x86文件夹,但它可以在\ Debug和\ Release文件夹中找到,其中输出在本地构建期间发出。

我正在使用Visual Studio 2017(更新15.6.3)并尝试以下操作:

  • 清洁解决方案/重建所有内容
  • 删除对第二个Web项目的项目引用并再次添加
  • 确保两个项目都具有相同的平台目标

创建一个普通的类库不是我的有利选择,因为我想使用我的主要Web项目中的元包支持。否则,如果有大量的软件包参考,那么我担心与我的主要项目保持同步会有点痛苦。

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:0)

当我发布引用另一个项目的.net核心网络应用程序时,我遇到了同样的问题。

我手动删除了bin和obj文件夹重建项目并解决了这个问题。

答案 1 :(得分:0)

我基本上通过添加一个针对完整.NET Framework的普通类库来解决它,添加了ASP.NET Core Dependencys并使用以下代码使ASP.NET Core了解程序集:

var secondWebProject = typeof(SecondWebProjectController).Assembly;
services.AddMvc().AddApplicationPart(secondWebProject);