大项目的一部分是支付系统,我想重用。我想将此支付系统的所有类文件合并到DLL中,以便将它们作为参考添加到所有其他项目中。目前的支付系统还使用来自商业应用程序的DLL的命名空间(nsoftware-paypal,其他几个)。我尝试使用csc将单个文件编译成DLL,但无法使其工作。我也试过了 ILMerge ,但这似乎也没有用。
CSC
由于.cs文件使用nsoftware-Paypal的DLL中的命名空间,因此我在csc命令中包含了DLL文件和.cs。它给我一个错误说“... nsoftware.InPayPal.dll是一个二进制文件而不是文本文件”。当我尝试在没有paypal DLL的情况下进行编译时,它会抛出一个错误,上面写着“名为nsoftware的类型或名称空间缺失”。
ILMerge也不允许.cs文件(当然它不是程序集)。
我需要做的就是为整个系统生成一个(或多个)DLL,以便我可以在其他项目中使用它。
可能的?
答案 0 :(得分:2)
您需要使用csc编译.cs文件,然后使用ILMerge将第三方程序集与生成的程序集合并。
有一个ILMerge的开源gui可以让事情变得更容易(至少在开始时)。
http://sourceforge.net/projects/gilma/
关于编译问题,您可能需要查看此tutorial
为了用dll编译你的代码做类似的事情
csc /out:out.exe /r:third_party_dll.dll program.cs
答案 1 :(得分: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