移动单个DLL时检查方法签名

时间:2009-01-13 20:02:58

标签: .net

有没有办法检查一堆.NET dll的方法签名是否“相互排列”?基本上编译器在编译期间做了什么,但它会尝试移动单个dll而不是整组20来解决问题。

例如,您有一个位于AssemblyB.dll

的函数
function foo(strMyValue as string, objObject as IObject)

几个月后变成了这个

function foo(strMyValue as string, objObject as IObject2)

你想移动AssemblyC,它从AssemblyB.dll调用函数foo。如果你一次移动所有的dll,没有问题,因为AssemblyC有来自AssembleyB的新方法签名并传入新类型。但是,让我们说有一个紧急情况,您需要移动AssemblyC来解决问题。我知道捕获它的唯一方法是实际命中将调用该方法的代码行。

要考虑的事情 我没有分店。我希望我做到了,但我不在系统的开始,而在系统的尾端,我们没有办法到达那里。

我可以移动我所有的dll,但会有数百个未记录的更改随之而来。该系统目前有400万行代码。

1 个答案:

答案 0 :(得分:1)

我认为你所指的是你已经做了一系列改变,你不一定准备好移动,但需要在紧急情况下移动一个版本。

而不是转动

function foo(strMyValue as string, objObject as IObject)

进入

function foo(strMyValue as string, objObject as IObject2)

你能不重载foo在AssemblyB中同时拥有两个方法签名?废弃第一个函数,以便至少告诉人们他们不应该使用它,然后在准备好对它进行更改时上传AssemblyC?之后,一旦您确定已完全切换,就可以删除原始方法签名。

如果你永远不改变方法签名,你就不应该有这样的问题。

但是,在我看来......我会让自己开始运行某种源代码控制。