考虑两个。净dll。第一,"application.dll"包含的主要业务逻辑和数据的访问代码。第二,"webservice.dll"主要包括WebMethods链接到对象和方法application.dll 为该目的提供服务的呼吁,以现有的代码。

什么样的变化(例如添加新课程,增加一个新的领域或方法,以现有类等)可以和不可以被制成application.dll 而不需要重新编译的webservice.dll?

有帮助吗?

解决方案

大多数事情都会被罚款;一些事情,这将打破它:

  • 除去*使用的类型(除非你使用的类型转发)
  • 除去*方法是使用(包括constructor)
  • 改变签字的方法(使用)
  • 改变公共领域的性质(使用)
  • 变化如果内部化是使用
  • 加入一个方法一个接口,那里的第二dll中有一种实现该接口
  • 增加一个抽象的方法的一个基类继承的第二dll
  • 几乎所有的东西内部如果哈克的反映是(b)使用
  • 添加的限制一般类型的方法/方法
  • 类型标记为 sealed 当它被继承在第二dll
  • 添加一场 struct 如果呼叫者使用员初始化,而不是构造的初始化

(删除包括改变性东西的非公开)

其他提示

从技术上讲,名称会破坏它(在强名称组合的情况下,名称和版本以及密钥标记)。否则,框架将尝试加载和使用DLL,这将会或多或少地工作,直到它遇到不同的类型或方法签名,缺少类型等。但请注意,使用名称会直接回到DLL地狱(或其中的问题)。

我建议您阅读有关汇编版本控制的更多信息,以获取相关信息如何解决这些问题。

只要您没有调用新类,函数[在application.dll中添加],您就可以对application.dll进行任何更改,而无需重新编译webservice.dll。 如果你想在webservice.dll中使用你的任何application.dll更改,那么你必须重新编译webservice.dll

当然,如果您更改了websrvice.dll使用的application.dll中任何方法或属性的签名或访问级别,它将破坏您在webservice中的代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top