2009-01-13 56 views
0

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

例如你有一个住在AssemblyB.dll功能

function foo(strMyValue as string, objObject as IObject) 

变成这样了几个月后

function foo(strMyValue as string, objObject as IObject2) 

而且要移动AssemblyC从AssemblyB调用函数foo。 DLL。如果你一次移动所有的DLL,没有问题,因为AssemblyC拥有来自AssembleyB的新方法签名并传入新类型。但让我们说出现紧急情况,您需要将AssemblyC上移以解决问题。我所知道的唯一方法就是实际触及将调用该方法的代码行。

需要考虑的事情 我没有分支。我希望我做到了,但是我并没有为系统的启动做好准备,而且在系统的最后阶段我们还没有办法到达那里。

我可以移动所有的dll,但会有数百个与此相关的无证更改。该系统目前拥有400万行代码。

回答

1

我认为你所指的是,你已经做了一堆变更,你不一定准备好移动,但需要在紧急情况下移动构建。

改运

function foo(strMyValue as string, objObject as IObject) 

function foo(strMyValue as string, objObject as IObject2) 

你能不能过载富来在AssemblyB两种方法的签名?第一个功能已经过时,至少让人们知道他们不应该使用它,然后在你准备好进行更改时上传AssemblyC了?之后,一旦确定完全切换,您可以删除原始方法签名。

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

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

+0

我们现在使用TFS,刚刚来自VSS。我们想把分支放进去,但以前的开发者在我们的旧代码上创建了循环引用。 如果旧的方法已经过时,那就太好了,我们已经开始这样做了,但并不是每个人都这么做。与我们有两个源控件,它不好玩。 – Josh 2009-01-13 21:08:03