情况如下。我的ASP.Net应用程序的解决方案有3个项目A,B和C. B包含一个函数(例如:testfunction),由A和C中的Pages使用。现在对于项目C的某个要求,我需要对测试函数进行更改。为了实现这一点,我添加了一个带有从C传递的默认值的可选参数。我编译了我的代码并将其移动到服务器,这是来自B和C的Dll。在我的测试中,需求工作正常。但是当涉及项目A调用测试函数的应用程序部分被调用时,它会出现错误(找不到方法)。我无法弄清楚为什么A应该打破。我只是从A重新编译DLL并将其移动到服务器并且错误消失了。
我的问题是当我没有改变我从A调用的方式时为什么要编译A的DLL?
答案 0 :(得分:0)
更多的是猜测,但是我认为这是因为dll“ A”搜索特定的方法“ signiture”,例如:
B.testfunction(Integer,String)
不是
B.testfunction(Integer,String,[String])
那是另一种方法。
您可以通过保留原来的方法并添加新的重载方法来进行测试:
Public Overloads Sub testfunction(p1 As Integer, p2 As String)
testfunction(p1, p2, Nothing)
End Sub
Public Overloads Sub testfunction(p1 As Integer, p2 As String, p3_notOptional As String)
'Do the thing.
End Sub
如果正确,则“ A”不再需要重新编译。