从另一个 ASP.NET 核心 2 项目引用 ASP.NET 核心 2 项目在发布时失败
Referencing ASP.NET Core 2 project from another ASP.NET Core 2 project fails when publishing
为了在大型 Web 应用程序中为单独的子项目拆分控制器,我创建了另一个 ASP.NET Core 2 Web 项目并从我的主 Web 项目中引用它。
这些项目在完整的 .NET Framework 4.7.1 上使用 ASP.NET 核心 运行。
在第二个项目中,我放置了额外的控制器和一个用于服务注册的扩展方法。
我只需要将第二个 Web 项目的输出类型更改为 class 库,并且在开发过程中一切正常。
但是,当我尝试将 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 项目的项目引用并重新添加
- 确保这两个项目具有相同的平台目标
创建一个普通的 class 库不是我喜欢的选择,因为我想使用我的主要 Web 项目中的元包支持。否则,我担心拥有大量的包引用与我的主要项目保持同步会有点痛苦。
非常感谢您的帮助!
我在发布引用另一个项目的 .net 核心 Web 应用程序时遇到了同样的问题。
我手动删除了 bin 和 obj 文件夹并重建项目并解决了它。
好吧,我基本上通过添加针对完整 .NET Framework 的普通 class 库解决了它,添加了 ASP.NET 核心依赖项并使用以下代码使 ASP.NET 核心了解组装:
var secondWebProject = typeof(SecondWebProjectController).Assembly;
services.AddMvc().AddApplicationPart(secondWebProject);
为了在大型 Web 应用程序中为单独的子项目拆分控制器,我创建了另一个 ASP.NET Core 2 Web 项目并从我的主 Web 项目中引用它。 这些项目在完整的 .NET Framework 4.7.1 上使用 ASP.NET 核心 运行。
在第二个项目中,我放置了额外的控制器和一个用于服务注册的扩展方法。
我只需要将第二个 Web 项目的输出类型更改为 class 库,并且在开发过程中一切正常。
但是,当我尝试将 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 项目的项目引用并重新添加
- 确保这两个项目具有相同的平台目标
创建一个普通的 class 库不是我喜欢的选择,因为我想使用我的主要 Web 项目中的元包支持。否则,我担心拥有大量的包引用与我的主要项目保持同步会有点痛苦。
非常感谢您的帮助!
我在发布引用另一个项目的 .net 核心 Web 应用程序时遇到了同样的问题。
我手动删除了 bin 和 obj 文件夹并重建项目并解决了它。
好吧,我基本上通过添加针对完整 .NET Framework 的普通 class 库解决了它,添加了 ASP.NET 核心依赖项并使用以下代码使 ASP.NET 核心了解组装:
var secondWebProject = typeof(SecondWebProjectController).Assembly;
services.AddMvc().AddApplicationPart(secondWebProject);