创建包含静态类

时间:2017-06-13 20:56:28

标签: c# asp.net-core nuget-package

我正在尝试为名为IdentityUtility的项目创建一个nuget包,以便在其他项目中使用。 问题是我添加nuget包的任何项目都看不到nuget包中的静态类(这些类包含扩展方法)。 其他一切都是可见的。 我尝试过只引用IdentityUtility项目而不打包它,一切都运行良好。

当我的项目有静态类时,在创建nuget包时是否需要更改一些设置?

这是一个静态类

 using Microsoft.Extensions.DependencyInjection;
 using System;

 namespace IdentityUtility
 {
public static class IdentityUtilityExtensions
{

    /// <summary>
    /// Set up Identity Utility for use in app.
    /// </summary>
    /// <param name="services"></param>
    /// <param name="setupOptions">Specific setup details</param>
    /// <returns>IServiceCollection with IdentityUtility attached</returns>
    public static IServiceCollection AddIdentityUtility(this IServiceCollection services, IdentitySetupOptions setupOptions)
    {
        if (services == null)
            throw new ArgumentNullException(nameof(services));


        if (setupOptions == null)
            throw new ArgumentNullException(nameof(setupOptions));

        if (setupOptions.IdentityServerUrl != null)
            IdentitySettings.LOGICORE_IDENTITY_URL = setupOptions.IdentityServerUrl;
        if (setupOptions.RequestingService != null)
            IdentitySettings.THIS_SERVICE = setupOptions.RequestingService;
        if (setupOptions.EmailConfirmedReturnUrl != null)
            IdentitySettings.EMAIL_CONFIRMED_RETURN_URL = setupOptions.EmailConfirmedReturnUrl;
        if (setupOptions.TokenPrivateKey != null)
            IdentitySettings.TOKEN_PRIVATE_KEY = setupOptions.TokenPrivateKey;
        if (setupOptions.TokenExpirationMinutes != 0)
            IdentitySettings.TOKEN_EXPIRATION_MINUTES = setupOptions.TokenExpirationMinutes;
        if (setupOptions.CookieExpirationMinutes != 0)
            IdentitySettings.COOKIE_EXPIRATION_MINUTES = setupOptions.CookieExpirationMinutes;

        services.AddIdentityPolicies();

        return services;
    }//AddIdentityUtility
 }//Cls
}//NS

当我尝试使用

调用扩展方法时
   services.AddIdentityUtility(setupOptions);

我收到一条错误消息,指出IServiceCollection不包含AddIdentityUtility等的定义。

当我以正常方式引用项目而不创建Nuget包时,这个问题就消失了

1 个答案:

答案 0 :(得分:0)

虽然对你来说似乎是你引用了一个旧包,但对我来说,我必须确保我的使用声明如下:

using static NugetPackageNamespace.Extension

......这就是诀窍!