对于Fedora,我们想要构建Newtonsoft。Mono 4的Json。最好也运行一下测试。但是当构建Newtonsoft.Json.Tests.Net40。Csproj,我们得到这样的错误:
Utilities/DateTimeUtilsTests.cs(56,24): error CS0122: `Newtonsoft.Json.Utilities.StringReference' is inaccessible due to its protection level
所以检查源代码:https://github.com/JamesNK/Newtonsoft.Json/blob/master/Src/Newtonsoft.Json.Tests/Utilities/DateTimeUtilsTests.cs#L56https://github.com/JamesNK/Newtonsoft.Json/blob/master/Src/Newtonsoft.Json/Utilities/StringReference.cs翻译
StringReference定义为internal struct
根据https://msdn.microsoft.com/library/7c5ka91b.aspx, "内部类型或成员只能在同一程序集中的文件中访问"
那这怎么可能呢?我错过了什么?这是否适用于MS.NET,而不适用于Mono?
internal不仅对定义它们的程序集可见,而且对友好程序集可见。关于友好程序集,您可以在MSDN
中阅读。在源代码中,它们在这里和这里定义
可能您尝试使用签名版本的NewtonSoft.Json.dll运行测试,并且它具有与源中定义的不同的公钥(因为您使用自己的*. dll签名程序集)。