我正在尝试为名为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包时,这个问题就消失了
答案 0 :(得分:0)
虽然对你来说似乎是你引用了一个旧包,但对我来说,我必须确保我的使用声明如下:
using static NugetPackageNamespace.Extension
......这就是诀窍!