2013-05-05 61 views
1

最近遇到protobuf网,真棒图书馆。Protobuf网宪兵错误

我跑它通过gendarme,它想出了许多性能通知,如:

目标:System.Int32 ProtoBuf.ProtoReader :: ReadFieldHeader()汇编: protobuf网,版本为1.0。 0.0,文化=中性 公钥=空

严重性:高可信:高来源:调试符号 不可用,IL偏移0x0055自详细信息:类型 'System.Int32' 正在 装箱。

如果任何人有宪兵经验是多么的重要,这些类型的通知和这事我可能有助于回来试图清理任何严重性protobuf网:高问题?

+0

猜猜这取决于你真的想做什么。马克让源代码可用,如果你担心你会查看源代码,它会不会更有效?您可以始终从下载/ NuGet获得PDB以及..yourproject \ packages \ protobuf-net.2.0.0.621 \ lib \ net40,但项目中也有许多测试。 – 2013-05-05 23:02:49

+0

我可以在一两天内看一眼(刚刚从长途飞行回来) - 但是:它可能是一个误报:protobuf-net实际上是作为双重代码库存在的:反射模型***和***一个元编程模型。它使用最好的,通常意味着元编程模型。这可能是因为它抱怨反射模型(其效率较低)。但是:我会看看。顺便说一句,PDBs是完全可用的 - 它应该有权访问调试符号 – 2013-05-05 23:50:28

+0

有关信息,我已经通过这些;他们中没有一个特别引人注目,但我已经做了一些整理,以使宪兵更高兴 - 但坦率地说,他们是误报*真的*。唯一值得注意的地方是我有一个错误的'#if'标记,这意味着自定义异常不是binaryformatter-serializable。不完全是一个关键点。 – 2013-05-08 16:36:15

回答

1

你举特定的错误来源于:

if(fieldNumber < 1) throw new ProtoException(
    "Invalid field in source data: " + fieldNumber); 

所以,是在技术上这是一个不必要的盒子 - 但是,它是值得我们在乎的极端边缘的情况下(如果您得到这个例外,你比盒子有更大的问题)。不过,它可能是固定的,如果它引起你的关注。

从反射实现中可能会引发一些进一步的错误 - 这会引起误解,因为在大多数情况下,实际上并未使用(代码既有反射模型也有元编程模型) 。

我的目标是看看宪兵队下周会说什么:update - done - 请注意,这其中大部分基本上是“忙碌的工作” - 除了让Gendarme高兴以外,并没有真正改变任何重要的东西。