【问题标题】:.Net 6.0 Web SDK class library creation.Net 6.0 Web SDK类库创建
【发布时间】:2023-02-22 06:00:47
【问题描述】:

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

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

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

这可行,但继续使用 netstandard2.1 TFM 使我们依赖于 Microsoft.AspNetCore.Mvc v2.2.0。这真的不是一个很好的前进道路,因为该项目已经存档了 4 年,并且发布时它依赖于几个具有已知安全漏洞的库版本:

所以,我正在尝试找出可升级实现的路径,这意味着转到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 的类库?我错过了什么?

【问题讨论】:

    标签: asp.net-core .net-6.0 class-library


    【解决方案1】:

    原来答案真的很简单:Microsoft.NET.Sdk.Web projects apparently default to

    <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>
        ...
    
    

    【讨论】:

      猜你喜欢
      • 2022-12-03
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多