为什么在NuGet中登录Common.Logging会使用.NETPortable?

为什么在NuGet中登录Common.Logging会使用.NETPortable?,.net,msbuild,mono,mscorlib,common.logging,.net,Msbuild,Mono,Mscorlib,Common.logging,我正在使用: MonoDevelop 7.1 .NET Framework 4.6.2 Mono 5.0.1.1(2017-02/5077205 Thu May 25 09:16:53 UTC 2017)(64位) 没有PCL或个人资料(据我所知) msbuild 15.2.0.0(2017年5月11日星期四17:28:41 UTC) 未指定;也就是说,它保持默认状态。 设置为v4.6.2 当我在IDE中构建时,我看不到任何警告或错误。但是,当我使用 msbuild /v:detailed

我正在使用:

  • MonoDevelop 7.1
  • .NET Framework 4.6.2
  • Mono 5.0.1.1(2017-02/5077205 Thu May 25 09:16:53 UTC 2017)(64位)
  • 没有PCL或个人资料(据我所知)
  • msbuild 15.2.0.0(2017年5月11日星期四17:28:41 UTC)
未指定
;也就是说,它保持默认状态。
设置为v4.6.2

当我在IDE中构建时,我看不到任何警告或错误。但是,当我使用

msbuild /v:detailed my.sln
我看到其中一些信息:

  Dependency "mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea77
98e, Retargetable=Yes".
      Could not resolve this reference. Could not locate the assembly "mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
浏览Mono文件时,以下所有程序集都与上述版本和密钥匹配:

/usr/lib/mono/xbuild-frameworks/.NETPortable/v4.0/Profile/Profile102/mscorlib.dll
/usr/lib/mono/xbuild-frameworks/.NETPortable/v4.0/Profile/Profile19/mscorlib.dll
/usr/lib/mono/xbuild-frameworks/.NETPortable/v4.0/Profile/Profile225/mscorlib.dll
/usr/lib/mono/xbuild-frameworks/.NETPortable/v4.0/Profile/Profile5/mscorlib.dll
/usr/lib/mono/xbuild-frameworks/.NETPortable/v4.0/Profile/Profile92/mscorlib.dll
/usr/lib/mono/xbuild-frameworks/.NETPortable/v4.0/Profile/Profile47/mscorlib.dll
/usr/lib/mono/xbuild-frameworks/.NETPortable/v4.0/Profile/Profile14/mscorlib.dll
/usr/lib/mono/xbuild-frameworks/.NETPortable/v4.0/Profile/Profile24/mscorlib.dll
/usr/lib/mono/xbuild-frameworks/.NETPortable/v4.0/Profile/Profile328/mscorlib.dll
/usr/lib/mono/xbuild-frameworks/.NETPortable/v4.0/Profile/Profile6/mscorlib.dll
/usr/lib/mono/xbuild-frameworks/.NETPortable/v4.0/Profile/Profile158/mscorlib.dll
/usr/lib/mono/xbuild-frameworks/.NETPortable/v4.0/Profile/Profile255/mscorlib.dll
/usr/lib/mono/xbuild-frameworks/.NETPortable/v4.0/Profile/Profile37/mscorlib.dll
/usr/lib/mono/xbuild-frameworks/.NETPortable/v4.0/Profile/Profile240/mscorlib.dll
/usr/lib/mono/xbuild-frameworks/.NETPortable/v4.0/Profile/Profile136/mscorlib.dll
/usr/lib/mono/xbuild-frameworks/.NETPortable/v4.0/Profile/Profile147/mscorlib.dll
/usr/lib/mono/xbuild-frameworks/.NETPortable/v4.0/Profile/Profile42/mscorlib.dll
/usr/lib/mono/xbuild-frameworks/.NETPortable/v4.0/Profile/Profile344/mscorlib.dll
/usr/lib/mono/xbuild-frameworks/.NETPortable/v4.0/Profile/Profile336/mscorlib.dll
/usr/lib/mono/xbuild-frameworks/.NETPortable/v4.0/mscorlib.dll
其他
mscorlib
程序集的版本错误,或者使用密钥令牌
b77a5c561934e089
而不是
7cec85d7bea7798e

我的问题是:

  • 为什么我的解决方案试图引用一个可移植的.NET
  • 是否有一个程序集引用树工具可以用来找出引用的罪魁祸首是什么
  • 为什么这是一个非致命错误,甚至根本没有出现在IDE构建输出中
  • 我是否应该手动参考其中一个组件?如果是,请选择哪种配置文件
  • 如果我不提及其中一个组件,会产生什么后果
  • 我的所有程序集都是强名称签名的这一事实是否会影响解决此错误的重要性
提前谢谢

编辑:

使用
monodis--assemblyref
,我发现问题很常见

Common.Logging.dll
AssemblyRef Table
...
4: Version=2.0.5.0
        Name=mscorlib
        Flags=0x00000100
        Public Key:
0x00000000: 7C EC 85 D7 BE A7 79 8E 

./Common.Logging.Core.dll
AssemblyRef Table
...
1: Version=2.0.5.0
        Name=mscorlib
        Flags=0x00000100
        Public Key:
0x00000000: 7C EC 85 D7 BE A7 79 8E 

./Common.Logging.NLog41.dll
AssemblyRef Table
...
6: Version=2.0.5.0
        Name=mscorlib
        Flags=0x00000100
        Public Key:
0x00000000: 7C EC 85 D7 BE A7 79 8E 
尽管我的
packages.config
特别要求.NET 4.62,但这是:

  <package id="Common.Logging" version="3.3.1" targetFramework="net462" />
  <package id="Common.Logging.Core" version="3.3.1" targetFramework="net462" />
  <package id="Common.Logging.NLog41" version="3.3.1" targetFramework="net462" />


因此,我猜这是
Common.Logging

重定向
msbuild/v:detailed my.sln
输出到某个文件并在某处共享的一个错误。你上面发布的内容并没有显示足够的信息,我也不认为“这是一个bug”。此外,还应安装ReferenceAssembles pcl(如果尚未安装),针对pcl配置文件进行编译对于NuGet作者来说非常常见。请将
msbuild/v:detailed my.sln
输出重定向到文件并在某处共享。你上面发布的内容并没有显示足够的信息,我也不认为“这是一个bug”。此外,如果您没有安装referenceassemblies pcl,那么您应该安装pcl,针对pcl配置文件进行编译对于NuGet作者来说非常常见。