我有一个用C#编写的目标,在Windows上使用.NET版本4.6.1编写,我也在Debian Jessie上使用mcs on mono 4.2.1编译。
我用来编译程序的命令是
$DLLS
其中$CURRENTDIR
是warning CS1701: Assuming assembly reference `Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' matches assembly `Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'. You may need to supply runtime policy
Compilation succeeded - 1 warning(s)
中的DLL列表。
困扰我的是编译器抛出以下警告。该程序按预期工作,但我对出现此警告的原因以及我可以如何修复它的方法毫无头绪。
$ grep -rh Newtonsoft .
<Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.8.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<package id="Newtonsoft.Json" version="8.0.2" targetFramework="net461" />
using Newtonsoft.Json;
using Newtonsoft.Json;
using Newtonsoft.Json;
using Newtonsoft.Json;
using Newtonsoft.Json;
项目中引用Newtonsoft.Json的所有行
$ monodis --assembly Newtonsoft.Json.dll | grep Version
Version: 8.0.0.0
$ strings Newtonsoft.Json.dll | egrep '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$'
8.0.2.19309
根据Refresh tokens in oauth2 should not be replaced when getting a new access token中推荐的这些命令,引用的DLL是版本8.0.0.0,我尝试通过NuGet在Windows上(通过Visual Studio 2015)和Linux通过How to get the AssemblyVersion of a .Net file in Linux获取最新版本(3.3.0)。
LoadLibraryEx
该项目最初使用的是Newtonsoft.Json v7,但在我在Linux下编译之前已更新到8.0.2。