着實費了很大的勁,才搞出來,貼出來共享下,嘿嘿。
目的:一個工程,如果設置輸出類型為class library,則編譯鏈接后生成的主文件默認的擴展名為.dll。如果有需要要將擴展名改為其他,如.plugin,那么如何設置呢?
問題:在VS2008中,C#類型的工程的屬性中並沒有設置輸出文件名稱這一項。。。
解決:在Build Events標簽的Pre-build events command line 和 Post-build event command line中分別如下設置:
Pre-build event command line :if exist $(TargetName).plugin del $(TargetName).plugin
Post-build event command line:ren $(TargetName)$(TargetExt) $(TargetName).plugin
說明:1)Pre-build event command line 和Post-build event command line真的非常有用非常靈活,它們分別提供了在編譯鏈接前和編譯鏈接后的用戶接口,可以供用戶方便的定制這兩個時間段的操作。
2)Pre-build event command line 和Post-build event command line中的輸入內容遵循DOS的語法規則——實際上,它們就是兩個批處理文件。
3)可以看到有個Macros按鈕,展開可以看到很多的宏,這些宏僅僅是一些提示,提供工程相關的對象的名稱。
4)可以在編譯時的OutPut窗口中看到Pre-build event command line 和Post-build event command line中批處理命令的執行語句,它們也確實是在當前工程編譯之前和編譯之后執行的。
5)if exist $(TargetName).plugin del $(TargetName).plugin:首先在編譯前將之前可能存在的.plugin文件刪除,如果不刪除,編譯后執行的重命名操作會報錯(提示有一個重名文件存在);ren $(TargetName)$(TargetExt) $(TargetName).plugin完成后綴名的修改。其中,$(TargetName)就是通過Macros按鈕的提示找到的宏,它的意思就是主輸出文件的文件名,$(TargetExt)是默認的擴展名,這里面是.dll。
copy file
xcopy $(ProjectDir)XMLConfig $(SolutionDir)$(SolutionName)/$(OutDir) /S /E /C /Y
copy "$(TargetDir)$(TargetName).lib" ../lib/deploy/$(TargetName).lib
編譯完成后將一個.lib 文件拷貝到指定目錄
Post-Build Event command line
在vs2003 和2005中都支持了Build Events, 但是2003只支持單行的命令,而2005可以支持多行命令.
要想在2003中執行多行命令,只能把命令寫在一個批處理文件中,然后通過調用批處理來執行.
1.在Solution explorer中用context meun查看project的property.
2.選擇Build Events,可以看到Pre-build 和Post-build event command line,以及運行Post-build event 的條件
//——————————————————
用法收集
1.build完后修改build產物的名字(后綴),並覆蓋已有的同名文件.
copy $(TargetFileName) $(TargetName).XXX y
2. 調用外部命令或批處理:
call "C:/Program Files/XXX.exe"
3. 條件判斷:
IF NOT $(ConfigurationName) == Release GOTO end
call "C:/Program Files/XXX.exe" $(ProjectDir)$(TargetName).cvp
:end
4.web project 自動部署
copy $(TargetDir)*.* //MyServer/MyService/bin
copy $(ProjectDir)*.ascx //MyServer/MyService
5. copy from one path to the other path
Copy "$(ProjectDir)pri.bin" "$(SolutionDir)$(SolutionName)/$(OutDir)"
copy pri.bin(file name) from $(ProjectDir) to $(SolutionDir)$(SolutionName)/$(OutDir)
//——————————————————
Macro收集
$(DevEnvDir)
$(ProjectDir)
$(BuiltOuputPath)
$(ConfigurationName)
$(TargetName) 不含擴展名
$(TargetFileName) 包含擴展名
轉帖地址:http://blog.csdn.net/zhongjiekangping/article/details/5268249