0

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

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

在 C# 中,所有库都是 DLL 吗?

另外,如果我只想提供(就源代码而言)函数定义而不是实现怎么办?在 C++ 中,您只会提供 .h 文件,但在 C# 中您会提供什么?

4

2 回答 2

2

DLL 是您在 C# 中提供的。

如果您想隐藏实现细节,那么您可以将您的类标记为internal. 但只要使用您的库的代码不需要引用您的类或创建您的类的实例,这将是可行的。如果需要其中之一,则无法避免公开您的类实现。

于 2012-11-18T19:33:05.250 回答
0

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

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

几乎我认为为 C# 执行此操作的唯一方法是拥有 2 个程序集。第一个只包含一个Interface定义,而第二个包含实现接口的实际类。您可以发布第一个库,但不能发布第二个库。如果走这条路,我还将提供一个模拟类,它实现了用于简单测试的接口。

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

除此之外,如果不提供实现的目的是您担心他们会反编译代码,那么您可能会研究一些混淆工具。不是 100% 有效,但它肯定会劝阻许多初级类型的开发人员。

于 2012-11-18T19:37:17.327 回答