手动编译包含多个文件库的完整C#项目

时间:2018-05-26 13:29:19

标签: c# dll compilation console project

我使用C#在Microsoft Visual Studio中创建了一个更大的项目。当我让 IDE构建项目时会发生什么:在/ bin目录中创建一个dll文件

现在我想在控制台(csc编译器)中手动编译整个事情。我试过了,但它从未解决过。

目录的结构如下: 带有实际项目文件的主目录(一个'主文件'),一个bin目录,以及一个带有我项目中引用的附加.cs文件的lib目录。

我必须在控制台中键入什么才能获得与IDE构建器完全相同的结果

提前感谢您的任何帮助:)

3 个答案:

答案 0 :(得分:1)

一种方法是使用“ msbuild ”,它是Visual Studio用于构建应用程序的open-source构建引擎。项目文件(.csproj)基本上包含XML格式的各种构建配置,该引擎在构建项目时使用这种配置。使用msbuild,您可以按如下方式构建项目:

msbuild.exe MyProj.proj /property:Configuration=Debug

它还有许多其他选项和开关,可以帮助手动构建项目(参见this

如果性能原因导致您手动/有选择地构建,我想提一下,可以选择并行构建多个项目以加快流程。有一个“maxcpucount”开关,我们可以用它来定义“msbuild”可并行构建的最大项目数(参见this)。您可以按如下方式使用它:

msbuild.exe myproj.proj /maxcpucount:3  

以下是一些可用于更好内存管理的属性(请参阅this

如果要将单个文件编译为可执行文件( .exe )或库( .dll ),则可以使用CSharp编译器( csc )。它可以使用如下:

编译生成File.exe的File.c:

csc File.cs

编译生成File.dll的File.c:

csc -target:library File.cs

编译File.cs并创建My.exe:

csc -out:My.exe File.cs

在启用了优化的情况下编译当前目录中的所有C#文件,并定义DEBUG符号。输出是File2.exe:

csc -define:DEBUG -optimize -out:File2.exe *.cs

编译当前目录中的所有C#文件,生成File2.dll的调试版本。没有显示徽标和警告:

csc -target:library -out:File2.dll -warn:0 -nologo -debug *.cs

将当前目录中的所有C#文件编译为Something.xyz(DLL):

csc -target:library -out:Something.xyz *.cs

更多详情here

但是,我不建议手动编译每个文件。可以使用上面提到的命令完成它,但需要你编写一个非常长的shell脚本。

答案 1 :(得分:0)

如果msbuild是一个选项,我会用它从命令行编译整个项目:

msbuild YourProject.csproj

答案 2 :(得分:0)

要使用csc编译多个文件,只需将cs文件的名称/路径传递给csc命令。

假设您有cs个文件:

  • Program.cs
  • ExtraCode.cs

并且它们依赖于以下dll文件:

  • MyCommonClasses.dll
  • DataAccess.dll

使用命令

csc Program.cs ExtraCode.cs /r:MyCommonClasses.dll /r:DataAccess.dll /t:exe /out:MyProgram.exe

创建exe MyProgram.exe

更多信息可以在这里找到:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/command-line-building-with-csc-exe

此处有命令列表:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/listed-by-category

相关问题