【问题标题】:Visual Studio insists I add a reference to an old version of an already-installed NuGet packageVisual Studio 坚持要我添加对已安装 NuGet 包的旧版本的引用
【发布时间】:2020-03-11 22:24:44
【问题描述】:

我有这门课,根据 Microsoft 示例稍作调整:

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.

using Root.Web.TokenStorage;
using Microsoft.Owin.Security;
using Microsoft.Owin.Security.Cookies;
using Microsoft.Owin.Security.OpenIdConnect;
using System.Security.Claims;
using System.Web;
using System.Web.Mvc;

namespace Root.Web.Controllers
{
    public class AccountController : Controller
    {
        public void SignIn()
        {
            if (!Request.IsAuthenticated)
            {
                // Signal OWIN to send an authorization request to Azure
                Request.GetOwinContext().Authentication.Challenge(
                    new AuthenticationProperties { RedirectUri = "/" },
                    OpenIdConnectAuthenticationDefaults.AuthenticationType);
            }
        }

        public ActionResult SignOut()
        {
            if (Request.IsAuthenticated)
            {
                var tokenStore = new SessionTokenStore(null,
                    System.Web.HttpContext.Current, ClaimsPrincipal.Current);

                tokenStore.Clear();

                Request.GetOwinContext().Authentication.SignOut(
                    CookieAuthenticationDefaults.AuthenticationType);
            }

            return RedirectToAction("Index", "Home");
        }
    }
}

在我获得 OWIN 上下文的那一行,我得到了这个错误:

错误 CS0012 类型“IOwinContext”在未引用的程序集中定义。您必须添加对程序集 'Microsoft.Owin, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 的引用。

但我已经从 NuGet 安装了更新版本的 Microsoft.Owin;为什么我不能使用它?由于其他 NuGet 包的依赖关系,我无法降级到 2.0.0.0。

如何告诉 Visual Studio 我想使用较新版本的Microsoft.Owin

【问题讨论】:

    标签: c# visual-studio nuget owin visual-studio-2019


    【解决方案1】:

    我想我明白了——我之前已经恢复了对我的 csproj 文件的更改,所以 Microsoft.Owin 包被卡在了边缘,根据 NuGet 安装但没有根据我的 csproj 文件安装。我必须切换到旧版本才能强制安装,然后再切换回来。

    【讨论】:

    • 我不是 100% 确定,但我认为这个包管理器控制台命令与降级和升级一样:update-package -reinstall
    • update-package -reinstall 仅适用于使用 packages.config 的项目。它对使用PackageReference 的项目没有任何作用,但PackageReference 的一个优点是您遇到的此类问题应该不再可能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多