我知道许多VB用户的一般观点是,这个“功能”实际上是相当有帮助,但我怀疑他们使用它与任何源控制系统。这是绝对INFURIATING当你试图与其他几个开发人员在任何重要规模的项目进行协作。如果忽略,您将对您的文件(即使没有实际的代码更改的文件)产生数千个假阳性“更改”,这会污染修订历史记录,并在某些情况下几乎不可能找到发生的实际更改。
如果你不忽略它(像我的办公室,我们被迫实施一个“不必要的情况改变”政策),你花费5倍的时间你通常在每次提交,因为你必须仔细恢复VB的“修正“对每个文件,有时还原数百行以放入一行更改。
当然必须有一个设置,插件,黑客等,可以删除这个不需要的“功能”?我愿意采取任何我可以得到的方法,只要它不需要我通过成堆的幽灵差异。并在前面挤压几个投诉:不,我不能关闭病例检测在我diff工具,这不是重点。不,我们不能只在全球范围内做出更改。我们正在与成千上万的LOC正在与多个开发人员合作开发多年的开发。从业务角度来看,同步是不可行的。最后:不,我们不能升级到VB.net或端口到另一种语言(尽可能多的我喜欢)。
(是的,我只是一点点小便,你能告诉我吗?我的道歉,但这是花费我的时间和我的公司的钱,我不觉得可以接受)。
我们使用Janus Grid,在某些时候,引用JSColumn的DefaultValue属性的所有代码行都变为defaultValue。这是一个调试整个IDE滋扰的机会。
我发现,刚刚添加了对MSXML的引用,现在IDE在Janus Grid typelib之前拾取ISchemaAttributes的defaultValue属性。
经过一些实验,我发现IDE收集“注册”标识符按照以下顺序:
>从项目引用库/项目 – >引用按它们列出的顺序@H_301_20@>控件从Project->组件(以未知顺序)@H_301_20@>源代码
所以我们做的简单的修复是创建一个虚拟类/接口与方法,我们适当的套管。因为我们已经有一个项目范围的typelib,我们引用每个项目之前任何其他typelib,这是无痛的做。
这里是我们的IUcsVbIntellisenseFix接口的IDL的一部分:
[ odl,uuid(<<guid_here>>),version(1.0),dual,nonextensible,oleautomation ] interface IUcsVbIntellisenseFix : IDispatch { [id(1)] HRESULT DefaultValue(); [id(2)] HRESULT Selector(); [id(3)] HRESULT Standalone(); ... }
我们为IUcsVbIntellisenseFix添加了很多方法,其中一些方法以枚举项目命名,我们用来拼写错误以及我们想要修复的内容。在每个项目引用的公共库(ActiveX DLL)中使用简单的VB类也是一样。
这样我们的源代码在某种程度上收敛到适当的套管,因为在检出时,IDE实际上固定的套管根据IUcsVbIntellisenseFix套管。现在我们不能拼写枚举,方法或属性,即使我们试图。