【问题标题】:Build error with IdentityModel v3.6.1 and .Net 4.7.2IdentityModel v3.6.1 和 .Net 4.7.2 的构建错误
【发布时间】:2018-05-22 19:48:01
【问题描述】:

我使用的是 IdentityModel v3.6.1 中的 IntrospectionClient 和 TokenClient。
但是当我将项目从 .Net 4.7.1 升级到 4.7.2 时,我遇到了构建错误:

“错误 CS0012 类型 'HttpMessageHandler' 在未引用的程序集中定义。您必须添加对程序集的引用 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”

该项目已经在引用“System.Net.Http”v4.3.3

有没有人知道 wat 已经改变了,我可以做些什么来解决这个问题?

【问题讨论】:

    标签: c# identityserver4 .net-4.7.2


    【解决方案1】:

    您是否使用 <PackageReference Include=".../> 引用 IdentityModel 包?如果是这样,我相信您可能会遇到这个已知问题:https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/613745%20-%20Single-name%20references%20are%20removed%20by%20the%20SDK%20when%20targeting%204.7.2.md

    假设是这种情况,您能否尝试其中列出的解决方法,基本上是在您的 .csrpoj 中添加以下内容:

    <ItemGroup>
      <PackageReference Include="System.Net.Http" Version="4.3.3">
        <ExcludeAssets>All</ExcludeAssets>
      </PackageReference>
    </ItemGroup>
    

    希望能解决您的问题。另外,请注意我们正在对 VisualStudio 方面进行修复,以便您不再需要此解决方法。

    【讨论】:

    • 这看起来是个问题。但是这里建议的解决方法对我不起作用。 IdentityModel 使用这个 PacketReference 来引用 System.Net.Http:github.com/IdentityModel/IdentityModel2/blob/dev/src/…。在我的项目中,我使用 NuGet 来引用 System.Net.Http。
    • 也许解决方法应该有效,但我看到 Visual Studio 的一些奇怪行为,所以我不确定。
    • 解决方法后,您是否尝试删除binobj 目录?我会确保两者都被删除,然后我会手动调用 msbuild yourProject.csproj /t:Restore 以重新生成 project.assets.json 文件。这样做之后,我希望事情会奏效。
    • 我必须删除 System.Net.Http 的 NuGet 包并为该包添加框架引用。它现在是 .Net-4.7.2 框架的一部分
    【解决方案2】:

    将 IdentityModel 包更新为 IdentityModel v3.7.0-preview1 有帮助。

    【讨论】:

    • 我必须删除 System.Net.Http 的 NuGet 包并为该包添加框架引用。它现在是 .Net-4.7.2 框架的一部分
    • 我今天发布了3.7。
    猜你喜欢
    • 2020-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多