有没有办法检查一堆.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万行代码。
答案 0 :(得分:1)
我认为你所指的是你已经做了一系列改变,你不一定准备好移动,但需要在紧急情况下移动一个版本。
而不是转动
function foo(strMyValue as string, objObject as IObject)
进入
function foo(strMyValue as string, objObject as IObject2)
你能不重载foo在AssemblyB中同时拥有两个方法签名?废弃第一个函数,以便至少告诉人们他们不应该使用它,然后在准备好对它进行更改时上传AssemblyC?之后,一旦您确定已完全切换,就可以删除原始方法签名。
如果你永远不改变方法签名,你就不应该有这样的问题。
但是,在我看来......我会让自己开始运行某种源代码控制。