此代码编译并在本地成功运行,但不在另一台服务器上运行。这两台机器都是64位操作系统。
这是电话:
retItem = (DataCollectionSetValueHeader)new DataCollectionSetValueHeaderLogic().GetItem(Id); // Id is an int.
这是被调用的方法签名:
public DataCollectionSetValueHeader GetItem(long entityID) // This one is obviously a long
这个编译,所以我假设将int传递给期望长的方法是可以的。但问题是,为什么这会在本地工作,但在另一台机器上出现“MissingMethodException”失败?
我们正在努力解决这个问题。 .NET框架的不同版本会导致这种情况吗?还有别的吗?
答案 0 :(得分:3)
这个编译,所以我假设将int传递给期望长的方法是可以的。
不,不是 - 不是二进制级别。在源代码级别没关系,因为编译器会将您的代码转换为:
GetItem((long) Id)
但是一旦你编译了使用方法的代码就好像它有一个int
参数一样,你就不能改变参数类型,只重新编译包含方法本身的程序集然后期望旧的二进制文件工作。您还需要重新编译调用代码。
如果你认为你在两个地方都使用相同的二进制文件(作为电话的目标),那么它必须是别的。