gpt4 book ai didi

c# - .NET DLL 是静态链接还是动态链接?

转载 作者:太空宇宙 更新时间:2023-11-03 22:45:24 25 4
gpt4 key购买 nike

我是 C# 的新手,现在必须支持用 C# 编写的整个测试套件。我在 Windows 2008 Server 上使用 Visual Studio 2013。

我的问题如下:

我有一个带有签名的类方法

public CommandInfo SetDns(String ipAdr1)

我更改它以添加一个可选参数

public CommandInfo SetDns(String ipAdr1, String ipAdr2="")

我刚刚重建了这个 DLL,并认为所有其他引用它的 DLL 都看不出有什么不同

但似乎较旧的 DLL 现在因错误而失败

System.MissingMethodException: Method not found: 'My.TestBeds.CommandInfo My.TestBeds.DDR.Net.SetDns(System.String)'.

我的查询:

  1. 这是预期的吗?我还必须重建所有 DLL 吗?

我遇到的麻烦是由于某些限制,我也必须 checkin DLL。所以我只想重建和 checkin 相关的:(

  1. 如果我还必须重建所有其他 dll,有没有办法知道哪些 DLL 有这个作为引用并且需要重建?

最佳答案

是的,添加参数是一项重大更改,即使它是可选的。 IL 包含编译器解析的确切签名,而不仅仅是名称。在不影响兼容性的情况下实现此更改的典型方法是添加重载 - 例如:

public CommandInfo SetDns(string ipAdr1) { return SetDns(ipAdr1, ""); }
public CommandInfo SetDns(string ipAdr1, string ipAdr2) {...}

否则:是的,这是一个重大变化,您需要重建所有消费者。

关于c# - .NET DLL 是静态链接还是动态链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50237444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com