I want to create a dll of .cs file by code
我想用代码创建一个.cs文件的dll,用C语言编程,有人能帮我解决这个问题吗?意味着我有两个类"class1"和"class2",我想通过编程为class1创建dll,这样我就可以请帮我做这件事。
编辑:
1 2 3 4 5 6
| ProcessStartInfo info = new ProcessStartInfo (@"C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe");
info .Arguments = @" /out:E:\pratik\file option\Class1.dll Class1.cs";
info .UseShellExecute = true;
Process .Start(info );
Console .ReadLine(); |
我已使用此代码创建它正在运行的dll,但我没有在给定路径上获取dll
- 到目前为止你试过什么吗?阅读常见问题解答和如何提问
- 你想用C语言写一个编译器吗?
- @H2CO3应该这样做,不是吗?
- 正如其他人已经说过的,请指出你所尝试的,你想要的,以及你目前为止所取得的结果有什么问题。
- @h2co3不,我只想为单个类创建一个dll假设我的应用程序中有一个两个类,我想通过cmd为第一个类创建一个dll,这是可能的,但是通过c中的代码,这对我来说是如何可能的?
- 将info.Arguments = @" /out:E:\pratik\file option\Class1.dll Class1.cs";改为info.Arguments = @" /out:E:\pratik\fileoption\Class1.dll Class1.cs";。
您可以使用编译器作为服务-codedomcompiler功能来动态创建dll/exe。
如何使用C编译器以编程方式编译代码
编译wiht codedom-关于codeproject的文章
另一种方法是编译文件csc.exe命令行工具来创建库。为此,您需要使用适当的参数启动新进程。
1 2 3 4 5 6
| Process.Start( Path.Combine(GetCscFolderLocation() ,"csc"), "/target:library File1.cs File2.cs /reference: <reference 1> <reference2> ..."
string GetCscFolderLocation()
{
// Getting CSC location
} |
获取csc.exe文件夹位置很困难。跟着这个来想个主意。
下面的示例在默认编辑器中启动文本文件。
1
| Process.Start(@"C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.e??xe", @"/target:library /out:C:\test\test.dll c:\test\File.cs"); |
- "msdn.microsoft.com/en-us/library/&hellip;"此链接对我不可用,我只想为单个类创建dll。
- 在这种情况下,您可以使用csc.exe工具。我将更新此方法的答案。
- 我已经使用此链接或代码,但这只是创建.exe而不是.dll
- @普拉蒂克,更新了答案
- process start info info=new processstartinfo(@"c:windowsmicrosoft.netframeworkv4.0.3&zwnj;&8203;0319csc.exe");info.arguments=@"/out:e:pratikfile optionclass1.dll class1.cs";info.useshellexecute=true;process.start(info);console.readline();我已使用此代码创建dll,它是正在运行,但我没有在给定路径上获取dll
- 您能从命令行编译这些文件吗?同时选择带有空格的目录路径。(file option而不是file选项)如果是,请调用process.waitforexit并检查process.exitcode
- 给出以下命令后,我遇到一个错误:c:windowsmicrosoft.netframeworkv4.0.30319csc.exe/target:library/out:myfile.dll class2.cs----"该文件找不到路径"----
- 首先尝试在命令提示下运行。如果出现此错误,则表示路径不正确(当前目录中不存在Class2.cs,或者csc.exe的路径错误)
- 不,当我只使用路径"c:windowsmicrosoft.netframeworkv4.0.30319csc.exe"编译器将运行,但我必须获得dll的输出,这意味着要获取dll的位置,所以我给出了---"/target:library/out:myfile.dll class2.cs"---
- 尝试/out:c:myfile.dll c:class2.cs,然后将class2.cs复制到c:。
- 我已经试过了,但没有成功
- 我尝试过跟踪,它成功地创建了文件.Process.Start(@"C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe", @"/target:library /out:C:\test\test.dll c:\test\File.cs");。文件中似乎有问题,或者路径太长(超过255个)
- 我在processStartInfo对象中分配参数,然后调用process.start(object)及其done。
- 但是我接受你,因为你帮助我解决问题,谢谢
- 我用最后的命令更新了答案。
转到Visual Studio中的新项目
根据需要选择类库名称
现在,把方法、属性放到类中,你需要什么
建造它。
将此引用添加到项目中。