VS2010命令行编译C#和VC项目

VS2010命令行编译C#和VC项目

  根据需要动态创建数据库字段后,需要动态创建或者调整页面,那就需要编译这些页面和后台文件。因此使用命令行编译将会非常方便,对于C#只需要安装相应版本的Framework即可。这些内容来自网络,并加以整理。

一 vs2010命令行编译C#项目

1. C#环境变量设置步骤:

在桌面右击[我的电脑]--属性--高级--环境变量, 在下面的系统变量栏点击“新建” 变量名输入“csc”
变量值输入:“C:\Windows\Microsoft.NET\Framework\v4.0.30319”(也许你的机器上.net
framework的版本会有所不同,因而后面的文件夹名称v4.0.30319会有不同)然后在系统变量列表框中双击“Path”
在变量名文本框的最后面加入“;%csc%;”(注意是双引号内的内容,前后要有分号)其实,有一种更简洁的方法,那就是直接编辑系统变量列表框中双击
“Path”,在后面加上“;C:\Windows\Microsoft.NET\Framework\v4.0.30319;”设置完环境变量,在
cmd命令中输入csc.exe,测试是否成功。

2. 设置VS2010环境变量
 2.1 include:
 D:\Program files\Microsoft Visual Studio
10.0\VC\include;C:\Program Files\Microsoft
SDKs\Windows\v7.0A\Include

2.2 lib:
 D:\Program files\Microsoft Visual Studio
10.0\VC\lib;C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib

2.3 path:
 D:\Program files\Microsoft Visual Studio
10.0\VC\bin;D:\Program files\Microsoft Visual Studio
10.0\Common7\Tools;D:\Program files\Microsoft Visual Studio
10.0\Common7\IDE

3. 可加入DirectX的环境变量

VC\Bin\下没有“msobj100.dll,mspdb100.dll,mspdbcore.dll,mspdbsrv.exe”这四个文件,解决的方法:直接从Common7\IDE\下复制这四个文件到VC\Bin\下即可解决

4. csc.exe编译器常用命令:

命令:csc File.cs ,功能:编译 File.cs以产生
File.exe,另一种写法:csc/out:MyFile.exe File.cs,可以自定义编译生成的执行文件名称
命令:csc/target:library File.cs ,功能:编译 File.cs 以产生
File.dll,另一种写法:csc/target:library /out:MyFile.dll 
File.cs,可以自定义编译生成的库文件名称
命令:csc/define:DEBUG /optimize /out:File2.exe *.cs ,功能:通过使用优化和定义
DEBUG 符号,编译当前目录中所有的 C# 文件,输出为 File2.exe
命令:csc /target:library /out:File2.dll /warn:0 /nologo /debug *.cs
,功能:编译当前目录中所有的 C# 文件,以产生File2.dll 的调试版本,不显示任何徽标和警告
命令:csc /target:library /out:Something.xyz *.cs ,功能:将当前目录中所有的 C#
文件编译为Something.xyz(一个DLL)

5. 命令行语法规则
当解释操作系统命令行上给出的参数时,C#  
编译器代码使用下面的规则:  
参数用空白分隔,空白可以是一个空格或制表符。  
^  
字符  
(^)  
未被识别为转义符或者分隔符。该字符在被传递给程序中的  
argv  
数组前,完全由操作系统的命令行分析器进行处理。  
无论其中有无空白,包含在双引号   ( "string
")  
中的字符串均被解释为单个参数。带引号的字符串可以嵌入在参数内。

前面有反斜杠的双引号   (\
")  
被解释为原义双引号字符   (
")。  
反斜杠按其原义解释,除非它们紧位于双引号之前。  
如果偶数个反斜杠后跟双引号,则每对反斜杠中的一个反斜杠放置在  
argv  
数组中,并且双引号被解释为字符串分隔符。  
如果奇数个反斜杠后跟双引号,则每对反斜杠中的一个反斜杠放置在  
argv  
数组中,双引号由其余的反斜杠“转义”,使原义双引号   (
")  
被放置在  
argv   数组中。

6. csc.exe编译器命令详解:

编译器位置:C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe

- 编译器选项
-                    
-  
输出文件  
-  
 
/out:<文件>                      
输出文件名(默认值:包含主类的文件或第一个文件的基名称)

/target:exe                      
生成控制台可执行文件(默认) 
(缩写:  
/t:exe)  
 
/target:winexe                   
生成Windows可执行文件        
(缩写:  
/t:winexe)  
 
/target:library                  
生成库                       
(缩写:  
/t:library)  
 
/target:module                   
生成能添加到其他程序集的模块 
(缩写:  
/t:module)  
 
/define:<符号列表>               
定义条件编译符号             
(缩写:  
/d)

/doc:<文件>                      
要生成的XML文档文件

/recurse:<通配符>                
根据通配符规范,包括当前目录和子目录下的所有文件  
 
/reference:<文件列表>            
从指定的程序集文件引用元数据 
(缩写:  
/r)  
 
/addmodule:<文件列表>            
将指定的模块链接到此程序集中

-  
资源文件    -
 
/win32res:<文件>                 
指定Win32资源文件(.res)  
 
/win32icon:<文件>                
使用该图标输出  
 
/resource:<资源信息>             
嵌入指定的资源               
(缩写:  
/res)  
 
/linkresource:<资源信息>         
将指定的资源链接到此程序集中 
(缩写:  
/linkres)

-  
代码调试   
-  
 
/debug[+|-]                      
发出调试信息  
 
/debug:{full|pdbonly}            
指定调试类型(“full”是默认类型,可以将调试程序附加到正在运行的程序)

/optimize[+|-]                   
启用优化                     
(缩写:  
/o)  
 
/incremental[+|-]                
启用增量编译                 
(缩写:  
/incr)  
   
-  
错误和警告  
-  
 
/warnaserror[+|-]                
将警告视为错误  
 
/warn:                        
设置警告等级(0-4)            
(缩写:  
/w)  
 
/nowarn:<警告列表>               
禁用特定的警告消息  
   
-  
语言  
-  
 
/checked[+|-]                    
生成溢出检查  
 
/unsafe[+|-]                     
允许“不安全”代码  
   
-  
杂项  
-  
 
@<文件>                          
读取响应文件以获得更多选项  
 
/help                            
显示此用法信息               
(缩写:  
/?)  
 
/nologo                          
取消编译器版权信息  
 
/noconfig                        
不要自动包含CSC.RSP文件  
   
-  
高级  
-  
 
/baseaddress:<地址>              
要生成的库的基址  
 
/bugreport:<文件>                
创建一个“错误报告”文件  
 
/codepage:                    
指定打开源文件时要使用的代码页  
 
/utf8output                      
UTF-8编码的输出编译器消息  
 
/main:<类型>                     
指定包含入口点的类型(忽略所有其他可能的入口点)  
(缩写:  
/m)  
 
/fullpaths                       
编译器生成完全限定路径  
 
/filealign:                   
指定用于输出文件节的对齐方式  
 
/nostdlib[+|-]                   
不引用标准库(mscorlib.dll)  
 
/lib:<文件列表>                  
指定要在其中搜索引用的附加目录

二 vs2010 命令行编译C/C++程序

电脑上装了 VS2010 (其他版本亦可)在 Microsoft Visual Studio 10.0\VC\bin 中可以找到
cl.exe

1
配置环境变量:要根据实际的安装盘符来修改,这里以 C:为例
       
1.1 设置 Path 为:
           
%安装路径%\Microsoft Visual Studio 10.0\VC\bin;
                   
%安装路径%\Microsoft Visual Studio 10.0\Common7\IDE;

1.2 设置 lib 为:
           
%安装路径%\Microsoft Visual Studio 10.0\VC\lib
                   
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib
(此项为固定路径)

1.3 设置 include 为:
           
%安装路径%\Microsoft Visual Studio 10.0\VC\include

2 命令行编译
命令 cl
            
用法: cl [ 选项... ] 文件名... [ /link 链接选项... ]

>cl main.c
           
用于 80x86 的 Microsoft (R) 32 位 C/C++ 优化编译器 16.00.30319.01 版
           
版权所有(C) Microsoft Corporation。保留所有权利。

main.c
           
Microsoft (R) Incremental Linker Version 10.00.30319.01
           
Copyright (C) Microsoft Corporation.  All rights
reserved.

/out:main.exe
           
main.obj
           
>
          
目录下生成 main.exe 和 main.obj 两个文件
    3
执行  >main
           
Hello World!
           
>

4
此外,还可以直接用 Visual Studio 命令提示(2010) 直接进行编译,不需要配置。
    Visual
Studio 命令提示(2010) 路径 :
    开始 -- 所有程序
-- Microsoft Visual Studio 2010 -- Visual Studio Tools -- Visual
Studio 命令提示(2010)

三 VS2010 VC批处理编译生成可执行程序 .
 
  每次编译生成都需要执行以下2步骤:

1、设置VS2010 VC编译环境

需要从命令行,进入C:\Program
Files\Microsoft Visual Studio
10.0\VC\Bin目录,运行vcvars32.bat批处理文件。具体执行如下:

cd
C:\Program Files\Microsoft Visual Studio 10.0\VC\bin

vcvars32

2、执行批处理文件

只有完成第一步后,再接着执行批处理文件才能有效,而且命令行的当前路径必须是C:\Program Files\Microsoft
Visual Studio 10.0\VC\bin。不知何故,可能是微软做了什么设置。批处理文件如下:

echo off 
set
ICV_SCRIPT=D:\iCentroView\iCV-Support5.3\Script

echo ---------编译和打包视频模块前后台程序---------- 
echo build time: �te% >>
%ICV_SCRIPT%\Rebuilder.log

echo
----------------准备编译环境----------------

echo
请手动拷贝iCV需要的include头文件和library库到iCentroView\iCV-Support5.3\路径下

path=%path%;%MSDevDir%;..\Executable; 
set
ICV_CS=D:\iCentroView\iCV-Support5.3\Source\VideoSource

echo 准备编译环境结束 
 
echo
-------------------开始编译---------------------

echo
------------------编译VideoAuth----------------

devenv
%ICV_CS%\videoservice\Source\multimedia\video\VideoAuth\VideoAuth.vcxproj
/ReBuild "Release" /out
%ICV_SCRIPT%\output.txt 
type %ICV_SCRIPT%\output.txt >>
%ICV_SCRIPT%\Rebuilder.log 
 
echo
------------------编译VideoService----------------

devenv
%ICV_CS%\videoservice\Source\multimedia\video\VideoService\VideoService.vcxproj
/ReBuild "Release" /out
%ICV_SCRIPT%\output.txt 
type %ICV_SCRIPT%\output.txt >>
%ICV_SCRIPT%\Rebuilder.log 
 
echo
-----------------删除生成的多余文件(.exp/.lib/.ilk)----------------

del ..\Executable\*.lib 
del ..\Executable\*.ilk 
del ..\Executable\*.exp 
 
echo
-----------------------全部编译结束---------------

pause #暂停

VS2010命令行编译C#和VC项目的更多相关文章

  1. 在linux下用命令行编译 java的eclipse项目

    由于jdk的版本问题导致在windows上编译打包好的jar包放在linux服务器上运行的时候出现一点小异常,所以决定在linux上进行一次项目编译,这有两个选择1.在相同的linux环境下安装lin ...

  2. opencv在VS2010命令行编译过程

    最近这两天一直在研究命令行参数的编译,现代吗如下: #include <highgui.h> #include <math.h> #include <cv.h> I ...

  3. egret命令行编译项目时 版本不对应的问题

    egret 命令行编译项目时 如使用 egret build -e 会出现版本不对应的问题 分析原因 A,B项目 A项目使用1.8的egret引擎, B项目使用2.5引擎 但本地引擎升级至2.5.5, ...

  4. 命令行编译java项目

    命令行编译java项目 项目名: testproj 目录 src -> cn -> busix -> test bin lib 编译项目 cd testproj javac -d . ...

  5. 一个使用命令行编译Android项目的工具类

    一个使用命令行编译Android项目的工具类 简单介绍 编译apk项目须要使用的几个工具,基本都在sdk中,它们各自是(Windows系统): 1.aapt.exe 资源打包工具 2.android. ...

  6. Windows下使用命令行编译Qt项目(解决DLL丢失问题)

    一.前言 我之前用Qt做了个hello world,结果各种报错,一大堆DLL找不到,今天用命令行编译就通过了 二.准备工作 1.Visual Studio(有nmake就行) 2.Qt 3.把qma ...

  7. Java 命令行编译项目

    如果是用Exlipse, 第三方的包可以放在eclipse文件夹的jre包的lib文件夹中! (初学者的一些总结-高手们勿喷哈-) 原因: 以前一直用Eclispe编程环境运行Java.非常舒服,就像 ...

  8. namke 命令行编译

    简介 大家已经习惯于微软提供的功能强大的IDE,已经很少考虑手动编连项目了,所谓技多不压身,有空的时候还是随我一块了解一下命令行编译. C/C++/VC++程序员或有Unix/Linux编程经验应该很 ...

  9. 命令行编译工具NMAKE

    简介 大家已经习惯于微软提供的功能强大的IDE,已经很少考虑手动编连项目了,所谓技多不压身,有空的时候还是随我一块了解一下命令行编译. C/C++/VC++程序员或有Unix/Linux编程经验应该很 ...

随机推荐

  1. Java 集合系列 11 hashmap 和 hashtable 的区别

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  2. hadoop入门之设置datanode的心跳时间的方法

    做作业的过程中发现,把一节点停掉,dfsadmin和50070都无法马上感知到一个data node已经死掉 HDFS默认的超时时间为10分钟+30秒.这里暂且定义超时时间为timeout计算公式为: ...

  3. 固定定位fixed(IE6)

     position: fixed;          left:200px;          top:100px;          _left:200px;          _top:100px ...

  4. 转:Nginx 配置 location 总结及 rewrite 规则写法

    转: http://www.linuxidc.com/Linux/2015-06/119398.htm 1. location正则写法 一个示例: location =/{ # 精确匹配 / ,主机名 ...

  5. [转]Visual Studio 2010 单元测试目录

    Visual Studio 2010 单元测试共分七个部分: 普通单元测试.顺序单元测试.压力测试,Generic测试.数据库测试.UI界面测试和Web性能测试. 这个系列的博客实例程序可以在下面的链 ...

  6. ACTIVITI 研究代码 之 模版模式

    模板方法模式需要开发抽象类和具体子类的设计师之间的协作.一个设计师负责给出一个算法的轮廓和骨架,另一些设计师则负责给出这个算法的各个逻辑步骤.代表这些具体逻辑步骤的方法称做基本方法(primitive ...

  7. R中rJava包载入时报错的问题

    今天安装XLConnect包,安装后无法library(XLConnect)载入,看报错问题应该出在rJava上,找到了下面的解决办法: if (Sys.getenv("JAVA_HOME& ...

  8. 选择最适合你的Linux学习方法

    我们知道Linux只是一个内核,现在的Linux操作系统底层都是用这个内核,包括Android手机,所以Linux操作系统其实是将Linux内核与应用软件做一个打包,我们称之为Linux发行版.现在比 ...

  9. Halcon 10.0:Hobject图像转CBitmap

    void HImage2CBitmap(Hobject pImage,CBitmap *wImage) { char lpcsType[MAX_STRING]; Hlong lPointer,widt ...

  10. POJ 2828 单点更新(好题)

    Buy Tickets Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 15086   Accepted: 7530 Desc ...