在更改了引用项目的方法签名后,我遇到了一个奇怪的问题.
让我解释一下发生的事情: 我得到了50个项目P1、P2、..、P50,它们依赖于包含公共功能的公共项目C0. P1到P50在客户之间分发,除非有必要,否则我不想重建和重新分发它们.
从P1到P50的项目包含此类
public partial class LogView: UserControl {
private void buttonReadUnit_Click(object sender, EventArgs e) {
readUnit();
...
public partial class LogView : IView {
public void readUnit() {
UnitBusyMode.Begin(Application.OpenForms[0],true);
...
C0包含
public partial class UnitBusyMode : Form{
public static Thread Begin(Form owner, bool cancellable = false){
...
昨天我把开始的方法改成了这个
public static Thread Begin(Form owner, bool cancellable = false, int setTemplate= TEMPLATE_NORMAL){
然后,我重新构建项目C0并将其分发给客户.
但在这一点上,我意识到许多P项目在readUnit();
调用线上出现错误.
错误类似于:ReadUnit()找不到签名为Begin(Form owner, bool cancellable = false)
的方法.
这非常奇怪,因为新的签名与旧的UnitBusyMode.Begin(Application.OpenForms[0],true)
呼叫兼容.
重新编译C0项目无济于事. 解决此问题的唯一方法是将所有的P1项目重新编译为P50项目.
这很奇怪,因为错误没有出现在Begin
方法调用行:UnitBusyMode.Begin(Application.OpenForms[0],true);
但是在对方法readUnit();
的调用上
你知道是什么导致了这个问题吗?如何防止它?
谢谢