0

大项目的一部分是支付系统,我想重用它。我想将此支付系统的所有类文件合并到 DLL 中,以便将它们作为引用添加到所有其他项目中。目前的支付系统也使用来自商业应用程序的 DLL 的命名空间(nsoftware-paypal n 其他几个)。我尝试 csc 将单个文件编译成 DLL,但无法使其工作。我也尝试了ILMerge,但这似乎也不起作用。

CSC

由于 .cs 文件使用来自 nsoftware-Paypal 的 DLL 的命名空间,因此我在 csc 命令中包含了 DLL 文件和 .cs。它给了我一个错误,说“...nsoftware.InPayPal.dll 是二进制文件而不是文本文件”。当我尝试在没有贝宝 DLL 的情况下进行编译时,它会抛出一个错误,提示“缺少名为 nsoftware 的类型或命名空间”。

ILMerge 也不允许 .cs 文件(因为它当然不是程序集)。

我需要做的就是为整个系统生成一个(或多个)DLL,以便我可以在其他项目中使用它。

可能的?

4

2 回答 2

2

您需要使用 csc 编译您的 .cs 文件,然后使用 ILMerge 将第 3 方程序集与您生成的程序集结合起来。

仅供参考,ILMerge 有一个开源 gui,可以使事情变得更容易(至少一开始是这样)。

http://sourceforge.net/projects/gilma/

关于您的编译问题,您可能需要查看本教程

为了用 dll 编译你的代码,做这样的事情

csc /out:out.exe /r:third_party_dll.dll program.cs
于 2010-07-13T21:27:07.600 回答
0

您需要使用 dllImport:

看看这个示例代码:

http://www.adp-gmbh.ch/csharp/call_dll.html

或者这个例子:

http://www.codeguru.com/csharp/csharp/cs_data/article.php/c4217

如果您需要传递结构:

http://msdn.microsoft.com/en-us/library/awbckfbz.aspx

最后是 dllImport 的文档:

http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute.aspx

于 2010-07-14T18:03:50.483 回答