【问题标题】:Warning CS1702 when using Microsoft Identity and building solution使用 Microsoft Identity 和构建解决方案时出现警告 CS1702
【发布时间】:2015-07-03 04:44:13
【问题描述】:

我四处寻找解决此错误的方法,但没有找到解决方案,即使在 SO 上也是如此。我得到的警告是这样的:

(0,0): warning CS1702: Assuming assembly reference 'Microsoft.Owin.Security.OAuth, 
Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' matches
'Microsoft.Owin.Security.OAuth, Version=2.0.2.0, Culture=neutral, 
PublicKeyToken=31bf3856ad364e35', you may need to supply runtime policy
Validation Complete
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========

这是我的Bin 目录的样子:

这是packages.config 文件:

<packages>
  <package id="EntityFramework" version="6.0.2" targetFramework="net45" />
  <package id="Microsoft.AspNet.Identity.Core" version="1.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.Identity.EntityFramework" version="1.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.Identity.Owin" version="1.0.0" targetFramework="net45" />
  <package id="Microsoft.Owin" version="2.1.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Host.SystemWeb" version="2.1.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security" version="2.0.2" targetFramework="net45" />
  <package id="Microsoft.Owin.Security.Cookies" version="2.0.2" targetFramework="net45" />
  <package id="Microsoft.Owin.Security.OAuth" version="2.0.2" targetFramework="net45" />
  <package id="Newtonsoft.Json" version="4.5.11" targetFramework="net45" />
  <package id="Owin" version="1.0" targetFramework="net45" />
</packages>

在我的web.config 文件中,运行时部分如下所示:

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-2.0.2.0" newVersion="2.0.2.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="2.1.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-2.0.2.0" newVersion="2.0.2.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-2.0.2.0" newVersion="2.0.2.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

您认为我需要做什么才能消除此警告?

谢谢。

【问题讨论】:

  • 在我看来,编译器正在查找 Microsoft.Owin.Security.OAuth.dll 库的两个版本,一个在您的 Bin 文件夹中,另一个在其他地方具有更新版本。 GAC 中有副本吗?
  • 您是否尝试删除并重新添加 dll?
  • 您是否尝试删除您的 obj 调试和发布文件夹?正如@TonyVitabile 提到的,这个错误是由于编译器发现了同一程序集的不同版本。
  • 我尝试删除并放入新包,但问题仍然存在。
  • 如果您使用 Nuget,您可以发布您的 packages.config 吗?

标签: c# asp.net


【解决方案1】:

您的项目文件可能仍在引用以前版本的程序集。

您可以通过选择项目中的引用下的 Microsoft.Owin.Security.OAuth 引用并查看属性来快速检查;但我建议您也检查项目文件的内容,并检查该程序集的参考,例如:

<Reference Include="Microsoft.Owin.Security.OAuth, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <Private>True</Private>
  <HintPath>..\..\packages\Microsoft.Owin.Security.OAuth.2.0.0\lib\net45\Microsoft.Owin.Security.OAuth.dll</HintPath>
</Reference>

检查参考版本和 HintPath 版本是否符合您的预期。

如果您查看解决方案的 Packages 文件夹,您可能会发现 Microsoft.Owin.Security.OAuth 的多个版本仍在其中,这可能是一个线索。 (你可以重命名或删除所有你不想要的版本,看看会发生什么)。

如果这仍然无法让您走得足够远,请打开构建日志详细信息,看看是否可以为您提供更多线索。

为此,在 Visual Studio 中转到 工具 > 选项 > 项目和解决方案 > 构建和运行,然后将 MSBuild 项目构建日志文件详细程度 更改为 NormalDetailed

【讨论】:

  • 如果它是引用旧版本的第三方库,则不确定这是否有帮助。即我们使用 Json 8,但我们使用的库引用 Json 6(在我的情况下为 WindowsAzure.Mobile.Ext)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-18
  • 1970-01-01
  • 1970-01-01
  • 2012-05-08
  • 1970-01-01
相关资源
最近更新 更多