我正在创建一个 ASP.NET Core 6 应用程序,我想在其中集成单独程序集提供的其他区域。我按照以下位置的文档进行操作https://learn.microsoft.com/en-us/aspnet/core/mvc/advanced/app-parts?view=aspnetcore-6.0。在提供应用程序部件的项目中,我添加了一个扩展方法IMvcBuilder
这使我可以方便地注册零件组装,例如:
services.AddMvc().AddFeatureXyzParts();
该扩展仅执行以下操作:
public static IMvcBuilder AddFeatureXyzParts(this IMvcBuilder builder)
{
if (builder == null) throw new ArgumentNullException(nameof(builder));
builder.AddApplicationPart(typeof(MvcBuilderExtensions).Assembly);
return builder;
}
在项目文件中,我更改了Sdk
属性来自Microsoft.NET.Sdk
to Microsoft.NET.Sdk.Web
隐式引用 ASP.NET Core 6 SDK(因为它是为主应用程序项目设置的),但这会破坏构建,并出现错误,指出程序集缺少 a 的定义Main
method.
由于它不是一个独立的 Web 应用程序组件,而是一个提供附加控制器类型和服务的部件库,因此我想设置Sdk
财产回到Microsoft.NET.Sdk
。然后我必须手动添加缺少的包引用。为此,Microsoft.AspNetCore.App
对于 ASP.NET Core 6 来说,package 似乎是错误的选择,并且Microsoft.AspNetCore.App.Refs
不得使用。
我需要什么参考资料?
Update- 定义满足构建所需的入口点
作为允许我引用所需的 ASP.NET Core 6 SDK 的解决方法,我可以使用Microsoft.NET.Sdk.Web
SDK如果我添加一个内部Program
定义一个类Main
方法。有了这个,我就可以根据需要注册我的零件装配,并且控制器(即使是某个区域的一部分)可以很好地集成。
internal static class Program
{
public static void Main() => throw new NotImplementedException();
}
您只需添加<FrameworkReference Include="Microsoft.AspNetCore.App"/>
到图书馆项目.csproj
文件中解释的docs:
<Project Sdk="Microsoft.NET.Sdk">
<!--... rest of file-->
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
<!--... rest of file-->
</Project>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)