考虑两个.net dll。第一个,“application.dll”包含主要的业务逻辑和数据访问代码。第二个,“webservice.dll”主要由WebMethods组成,它们通过application.dll链接到对象和方法,目的是为现有代码提供webservice调用。
在不需要重新编译webservice.dll的情况下,可以也不能对application.dll进行哪些更改(例如添加新类,向现有类添加新字段或方法等)?
答案 0 :(得分:3)
大多数事情都会好起来的;一些会破坏它的东西:
sealed
struct
添加字段(删除包括将可访问性更改为非公开的内容)
答案 1 :(得分:1)
从技术上讲,名称会破坏它(在强名称组合的情况下,名称和版本以及密钥标记)。否则,框架将尝试加载和使用DLL,这将会或多或少地工作,直到它遇到不同的类型或方法签名,缺少类型等。但请注意,使用名称会直接回到DLL地狱(或其中的问题)。
我建议您详细了解assembly versioning以了解如何解决此类问题。
答案 2 :(得分:0)
只要您没有调用新类,函数[在application.dll中添加],您就可以对application.dll进行任何更改,而无需重新编译webservice.dll。 如果你想在webservice.dll中使用你的任何application.dll更改,那么你必须重新编译webservice.dll
当然,如果您更改了websrvice.dll使用的application.dll中任何方法或属性的签名或访问级别,它将破坏您在webservice中的代码。