發(fā)布時(shí)間:2017-08-29 23:28 作者:獨(dú)孤劍 閱讀:1030
著實(shí)費(fèi)了很大的勁,才搞出來,貼出來共享下,嘿嘿。
目的:一個(gè)工程,如果設(shè)置輸出類型為class library,則編譯鏈接后生成的主文件默認(rèn)的擴(kuò)展名為.dll。如果有需要要將擴(kuò)展名改為其他,如.plugin,那么如何設(shè)置呢?
問題:在VS2008中,C#類型的工程的屬性中并沒有設(shè)置輸出文件名稱這一項(xiàng)。。。
解決:在Build Events標(biāo)簽的Pre-build events command line 和 Post-build event command line中分別如下設(shè)置:
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真的非常有用非常靈活,它們分別提供了在編譯鏈接前和編譯鏈接后的用戶接口,可以供用戶方便的定制這兩個(gè)時(shí)間段的操作。
2)Pre-build event command line 和Post-build event command line中的輸入內(nèi)容遵循DOS的語法規(guī)則——實(shí)際上,它們就是兩個(gè)批處理文件。
3)可以看到有個(gè)Macros按鈕,展開可以看到很多的宏,這些宏僅僅是一些提示,提供工程相關(guān)的對象的名稱。
4)可以在編譯時(shí)的OutPut窗口中看到Pre-build event command line 和Post-build event command line中批處理命令的執(zhí)行語句,它們也確實(shí)是在當(dāng)前工程編譯之前和編譯之后執(zhí)行的。
5)if exist $(TargetName).plugin del $(TargetName).plugin:首先在編譯前將之前可能存在的.plugin文件刪除,如果不刪除,編譯后執(zhí)行的重命名操作會報(bào)錯(cuò)(提示有一個(gè)重名文件存在);ren $(TargetName)$(TargetExt) $(TargetName).plugin完成后綴名的修改。其中,$(TargetName)就是通過Macros按鈕的提示找到的宏,它的意思就是主輸出文件的文件名,$(TargetExt)是默認(rèn)的擴(kuò)展名,這里面是.dll。
copy file
xcopy $(ProjectDir)XMLConfig $(SolutionDir)$(SolutionName)/$(OutDir) /S /E /C /Y
copy "$(TargetDir)$(TargetName).lib" ../lib/deploy/$(TargetName).lib
編譯完成后將一個(gè).lib 文件拷貝到指定目錄
在vs2003 和2005中都支持了Build Events, 但是2003只支持單行的命令,而2005可以支持多行命令.
要想在2003中執(zhí)行多行命令,只能把命令寫在一個(gè)批處理文件中,然后通過調(diào)用批處理來執(zhí)行.
1.在Solution explorer中用context meun查看project的property.
2.選擇Build Events,可以看到Pre-build 和Post-build event command line,以及運(yùn)行Post-build event 的條件
//——————————————————
用法收集
1.build完后修改build產(chǎn)物的名字(后綴),并覆蓋已有的同名文件.
copy $(TargetFileName) $(TargetName).XXX y
2. 調(diào)用外部命令或批處理:
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 自動(dòng)部署
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) 不含擴(kuò)展名
$(TargetFileName) 包含擴(kuò)展名
微信打賞, 微信掃一掃
支付寶打賞, 支付寶掃一掃
如果文章對您有幫助,歡迎給作者打賞