ASP.NET Core 6 应用程序部件项目必须引用哪些 Nuget 包

Mat*_*tze 24 c# .net-core asp.net-core asp.net-core-6.0

我正在创建一个 ASP.NET Core 6 应用程序,我想在其中集成单独程序集提供的其他区域。我遵循https://learn.microsoft.com/en-us/aspnet/core/mvc/advanced/app-parts?view=aspnetcore-6.0上的文档。在提供应用部件的项目中,我添加了一个扩展方法,IMvcBuilder可以方便地注册部件组件,例如:

\n
services.AddMvc().AddFeatureXyzParts();\n
Run Code Online (Sandbox Code Playgroud)\n

该扩展仅执行以下操作:

\n
public static IMvcBuilder AddFeatureXyzParts(this IMvcBuilder builder)\n{\n    if (builder == null) throw new ArgumentNullException(nameof(builder));\n    builder.AddApplicationPart(typeof(MvcBuilderExtensions).Assembly);\n    return builder;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

在项目文件中,我将Sdk属性从更改Microsoft.NET.SdkMicrosoft.NET.Sdk.Web隐式引用 ASP.NET Core 6 SDK(因为它是为主应用程序项目设置的),但这会破坏构建,并出现错误,指出程序集缺少以下定义一个Main方法。

\n

由于它不是一个独立的 Web 应用程序程序集,而是一个提供附加控制器类型和服务的部件库,因此 I\xc2\xb4d 希望将该属性设置SdkMicrosoft.NET.Sdk. 然后我必须手动添加缺少的包引用。为此,该Microsoft.AspNetCore.App包对于 ASP.NET Core 6 来说似乎是错误的选择,并且Microsoft.AspNetCore.App.Refs不得使用。

\n

我需要什么参考资料?

\n

更新- 定义所需的入口点以满足构建

\n

作为一种允许我引用所需 ASP.NET Core 6 SDK 的解决方法,如果我添加定义方法的Microsoft.NET.Sdk.Web内部类,我就可以使用该 SDK 。有了这个,我就可以根据需要注册我的零件装配,并且控制器(即使是某个区域的一部分)可以很好地集成。ProgramMain

\n
internal static class Program\n{\n    public static void Main() => throw new NotImplementedException();\n}\n
Run Code Online (Sandbox Code Playgroud)\n

Gur*_*ron 48

您可以按照文档<FrameworkReference Include="Microsoft.AspNetCore.App"/>中的说明添加到库项目文件:.csproj

<Project Sdk="Microsoft.NET.Sdk">
  <!--... rest of file-->

  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>

  <!--... rest of file-->
</Project>
Run Code Online (Sandbox Code Playgroud)

  • 使用 Microsoft.AspNetCore.App 在 CI/CD(天蓝色管道)中进行恢复大约需要 4 分钟 (2认同)