代码之家  ›  专栏  ›  技术社区  ›  Matt Mills

.Net 6.0 Web SDK类库创建

  •  0
  • Matt Mills  · 技术社区  · 1 年前

    我们有一个内部构建的类库,它公开了一些HTTP客户端,专门用于授权其他请求(获取/刷新令牌等)。到目前为止,它一直被建造为 netstandard2.1 ,并且我们能够毫无问题地保持依赖关系的最新状态。

    我们最近将一个额外的身份验证客户端类型从一个消费应用程序移植到这个库中。现有的实现使客户端被 IAsyncActionFilter 实现,以便可以将其添加为方法的属性:

    [AttributeUsage(AttributeTargets.Method)]
    public class OpaAuthAttribute : TypeFilterAttribute
    {
        public OpaAuthAttribute(string permission) : base(typeof(OpaAuthActionFilter))
        {
            Arguments = new object[] { permission };
        }
    }
    

    这是有效的,但与 网络标准2.1 TFM让我们依赖 Microsoft.AspNetCore.Mvc v2.2.0版本。这真的不是一条很好的前进道路,因为该项目已经存档了4年,而且在发布时,它依赖于几个已知安全漏洞的库版本: Snyk scan results .

    因此,我正在努力找出实现可升级的途径,这意味着要转向 net6.0 。我可以通过更改以下内容来获得所有依赖项:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <TargetFramework>netstandard2.0</TargetFramework>
        ...
    

    对此:

    <Project Sdk="Microsoft.NET.Sdk.Web">   <!-- Changed -->
      <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>   <!-- Changed -->
        ...
    

    但我仍然在构建输出中得到以下错误:

    Program does not contain a static 'Main' method suitable for an entry point
    

    是否可以创建一个使用最新版本ASP的类库。Net MVC SDK?我错过了什么?

    1 回复  |  直到 1 年前
        1
  •  5
  •   Matt Mills    1 年前

    事实证明,答案其实微不足道: Microsoft.NET.Sdk.Web 项目显然默认为

    <OutputType>exe</OutputType>
    

    所以即使 the default OutputType value for MSBuild is Library ,因为我使用的是Web SDK,所以我必须更新.csproj文件,以明确表示我想要一个类库:

    <Project Sdk="Microsoft.NET.Sdk.Web">
      <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <OutputType>library</OutputType>
        ...