在C#中为外部开发人员提供库的最佳方法是什么?

时间:2012-11-18 19:30:19

标签: c# dll header static-libraries

我正在用C#编写程序(Visual Studio 2010),我有一组函数,我希望以库的形式提供给其他人。我所做的是创建一个新项目并将项目类型设置为类库。我注意到输出类型是DLL。

我不一定要提供一个其他人可以动态链接到我想要的运行时库,提供一组其他人可以编译代码的函数。 (我相信C ++这将是一个.lib文件。)

在C#中是所有库的DLL吗?

另外,如果我只想提供(就源代码而言)函数定义而不是实现呢?在C ++中,你只给出.h文件,但是你用C#给出了什么?

2 个答案:

答案 0 :(得分:2)

DLL就是你在C#中提供的。

如果要隐藏实施细节,则可以将班级标记为internal。但只要使用您的库的代码不需要引用您的类或创建类的实例,这就可以了。如果其中一个是必需的,那么就不会逃避暴露你的类实现。

答案 1 :(得分:0)

正如Suhas所说,DLL就是你要分发的内容。

是的,“库”是DLL。从技术上讲,它们现在被称为“组件”。

我认为为C#做这件事的唯一方法就是拥有2个程序集。第一个只包含Interface定义,而第二个包含实现接口的实际类。您可以发送第一个库而不是第二个库。如果走这条路线,我还会提供一个模拟类来实现简单测试的接口。

这将涉及在运行时动态加载正确的程序集;这是完全可行的。通常通过配置设置。

如果没有提供实现的目的是你担心他们反编译代码,那么你可能会考虑一些混淆工具。不是100%有效,但它肯定会劝阻很多初级型开发者。