为软件的不同版本构建c# dll的最佳方法

本文关键字:dll 最佳 构建 方法 版本 软件 | 更新日期: 2023-09-27 18:17:25

我必须构建包含我们软件API调用的DLL的三个不同版本。到目前为止,我已经找到了以下使用继承的方法。有人可以确认我是否使用继承正确的方式(或者如果你有一个建议做一个适当的/更好的方式?)我是新手,所以还在学习c#项目编程。

到目前为止,我有API_calls的主类(这是常见的所有DLL版本)如下:

namespace APIcalls
{
  public partial class API_Calls
  {
    public void Common_function1()
    {
    }
    public void Common_function2()
    {
    }
  }
}

然后我有三个.cs类文件,每个文件中都有以下内容(Edition_A, Edition_B和Edition_C是每个版本DLL的不同因素),任何额外的调用都包含在部分类API_Calls中,如下所示:

namespace dll_edition
{
 public class Edition_A
 {
    public Edition_A()
    {
      // Code here for checking if current DLL is authorized
      // Otherwise throw an exception
    }
 }
}
namespace APIcalls
{
  public partial class API_Calls : Edition_A
  {
    public void Additional_Edition_A_function1()
    {
    }
    public void Additional_Edition_A_function2()
    {
    }
  }
}

在每个程序集构建中,我包括Edition_A文件,或Edition_B文件,或Edition_C文件,然后我构建所有三个程序集,这给了我三个dll。

我的问题是:这是正确的做法吗?对我的做法有什么负面评价吗?还是有更好的方法?我的最终目标是有三个版本的DLL,其中有一些常见的API调用,然后是针对每种DLL类型的各种API调用。

感谢您的任何意见!

dd

为软件的不同版本构建c# dll的最佳方法

据我所知,您在一个公共基类中设置了一组公共函数,供不同的其他类使用。

有各种各样的方法,各有利弊:-

1)为你正在做的每一种类型创建单独的库,其中只有有限的功能给最终用户,并且dll的大小很小。如果你的dll工作在plus和play模型上,你只需将dll转储到bin中,并且新功能已经就绪,那么这更适合。

这也使您的更改以中心为中心,因此您知道您的更改在哪里。但是,如果您已经将您的dll分发给最终客户端,而他们需要在其他dll中使用方法,那么您必须再次重新发布您的更改。

2)在一个dll中完成所有工作,不需要的功能暴露给客户端,部署包可能很重。但是你已经拥有了所有的功能。

总而言之,这主要取决于您的业务和部署模型。

就我个人而言,我更喜欢在一个DLL中完成所有工作,并使用工厂模式来确定在运行时运行哪个版本,但如果必须基于您的需求,这里是我的建议。

创建4个dll。

第一个项目将只包含编辑接口(例如,DLL的结构,但没有关于它如何工作的内容)。这个接口可以附加到不同版本DLL的类上。使用此结构将设置调用代码,以便它可以为不同版本的DLL使用依赖注入。

其他3个DLL将是您需要构建的DLL的不同版本。