我使用C#在Microsoft Visual Studio中创建了一个更大的项目。当我让 IDE构建项目时会发生什么:在/ bin目录中创建一个dll文件。
现在我想在控制台(csc编译器)中手动编译整个事情。我试过了,但它从未解决过。
目录的结构如下: 带有实际项目文件的主目录(一个'主文件'),一个bin目录,以及一个带有我项目中引用的附加.cs文件的lib目录。
我必须在控制台中键入什么才能获得与IDE构建器完全相同的结果?
提前感谢您的任何帮助:)
答案 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
。