日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多项目开发下的dll文件管理

發布時間:2023/12/10 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多项目开发下的dll文件管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
閱讀目錄:
  • DS01:為什么要對生成的dll文件進行管理?
  • DS02:首先介紹以下兩個DOS命令
  • DS03:第一種實現方法(xcopy)
  • DS04:第二種實現方法(attrib)
  • DS05:分享一個有意思的東西
  • DS06:您可能需要了解的其他知識
DS01、為什么要對生成的dll文件進行管理?

有時候,我們需要將編譯后的文件和dll拷貝到一個集中的地方,這一點對于多項目開發來講很有幫助。

回到頂部

DS02、首先介紹以下兩個DOS命令: 》attrib attrib指令的格式和常用參數為 ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [[drive:] [path] filename] [/S [/D]] + 設置屬性。 - 清除屬性。 R 只讀文件屬性。 A 存檔文件屬性。 S 系統文件屬性。 H 隱藏文件屬性。 I 無內容索引文件屬性。 [drive:][path][filename] 指定要處理的文件屬性。 /S 處理當前文件夾及其子文件夾中的匹配文件。 /D 處理文件夾。 /L 處理符號鏈接和符號鏈接目標的屬性。 attrib命令的幫助文檔 基本功能:顯示或更改文件屬性 常用用法:attrib -r 文件路徑\文件名 舉例說明: 我們在C盤根目錄下面建了一個文件test.txt,其屬性頁如下: 此命令操作可以將其只讀屬性去掉: PS:想要查看命令的幫助文檔,命令為:命令名 /? 》xcopy C:\Users\shenjl>xcopy /? 復制文件和目錄樹。 XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W][/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U][/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B][/EXCLUDE:file1[+file2][+file3]...]source 指定要復制的文件。destination 指定新文件的位置和/或名稱。/A 僅復制有存檔屬性集的文件,但不更改屬性。/M 僅復制有存檔屬性集的文件,并關閉存檔屬性。/D:m-d-y 復制在指定日期或指定日期以后更改的文件。如果沒有提供日期,只復制那些源時間比目標時間新的文件。/EXCLUDE:file1[+file2][+file3]...指定含有字符串的文件列表。每個字符串在文件中應位于單獨的一行。如果任何字符串與復制文件的絕對路徑的任何部分相符,則排除復制該文件。例如,指定如 \obj\ 或 .obj 的字符串會分別排除目錄obj 下面的所有文件或帶有 .obj 擴展名的所有文件。/P 創建每個目標文件之前提示您。/S 復制目錄和子目錄,不包括空目錄。/E 復制目錄和子目錄,包括空目錄。與 /S /E 相同??梢杂脕硇薷?/T。/V 驗證每個新文件的大小。/W 提示您在復制前按鍵。/C 即使有錯誤,也繼續復制。/I 如果目標不存在,且要復制多個文件,則假定目標必須是目錄。/Q 復制時不顯示文件名。/F 復制時顯示完整的源文件名和目標文件名。/L 顯示要復制的文件。/G 允許將加密文件復制到不支持加密的目標。/H 也復制隱藏文件和系統文件。/R 覆蓋只讀文件。/T 創建目錄結構,但不復制文件。不包括空目錄或子目錄。/T /E 包括空目錄和子目錄。/U 只復制已經存在于目標中的文件。/K 復制屬性。一般的 Xcopy 會重設只讀屬性。/N 用生成的短名稱復制。/O 復制文件所有權和 ACL 信息。/X 復制文件審核設置(隱含 /O)。/Y 取消提示以確認要覆蓋現有目標文件。/-Y 要提示以確認要覆蓋現有目標文件。/Z 在可重新啟動模式下復制網絡文件。/B 復制符號鏈接本身與鏈接目標相對。/J 復制時不使用緩沖的 I/O。推薦復制大文件時使用。開關 /Y 可以預先在 COPYCMD 環境變量中設置。 這可能被命令行上的 /-Y 覆蓋。 xcopy命令的幫助文檔

基本功能:復制文件和目錄樹。

常用用法:xcopy -r -y 原始文件夾\文件名 目標文件夾

舉例說明: xcopy -r -y test.txt ..\map\bin\ 此命令可以將當前文件夾下面的test.txt文件復制到父級目錄下面的map\bin\文件夾下面,如果有同名文件直接覆蓋,并且不給出覆蓋提示。 回到頂部 ? DS03、第一種實現方法(xcopy) 1、DOS命令: xcopy /r /y $(TargetPath) $(SolutionDir)\map\Bin\ 2、操作方法: 右鍵項目-屬性-生成事件。在生成后事件命令行輸入以上代碼,如下圖所示: 3、其中的各個參數的意義如下圖所示: 4、解釋如下: $(TargetPath)$(SolutionDir)是兩個宏,分別代表程序集編譯后生成的dll文件解決方案的路徑 即每次生成成功后,都會將\bin\Debug\目錄里面的Mysoft.Selonsy.Services.dll文件拷貝到?解決方案路徑\map\Bin\ 目錄下面,并覆蓋原有文件,且不給出覆蓋提示。 ? 回到頂部 ?DS04、第二種實現方法(attrib) ?1、操作方法: 我們也可以直接在生成里面配置輸出路徑,如下圖所示: 右鍵項目-屬性-生成-輸出路徑,更改為要拷貝到的目的文件夾。如:..\map\Bin\?(即:上級目錄的map\Bin\文件夾)。 注意:此時?map\Bin\ 文件夾下面就會有兩個文件,一個.dll和一個.pdb文件。 2、當然僅僅是這樣是不夠的,因為上面的事件動作是先檢查目的文件夾里面的內容,如果已經存在同名文件的話,將其刪除,再把obj/Debug里面生成的dll拷貝到該文件夾里面。 那么這樣就會出現異常,因為很多的項目都會設置部分重要文件夾為只讀(比如說上面的 \Map\bin\ ),所以正常執行刪除的時候會提示操作失敗,如下圖所示: 去只讀的原因:拷貝dll文件需要將以前的老的先刪除掉,再將新生成的dll文件拷貝過去,如果原dll文件只讀,那么就會刪除失敗,拷貝也就失敗了。 注意:從上面錯誤提示的第三句話可以看出,他是將obj/Debug下面的dll復制過去的。 當然,那些不設置為只讀的項目文件夾及文件就沒有這個問題了, 下面僅對設置了只讀屬性的情況進行討論。 3、編寫預先生成事件命令行,對目標文件夾里面的已存在的dll文件和pdb文件進行去只讀操作。 首先我們在解決方案文件夾下面新建一個BeforeBuild.bat批處理文件,其內容如下: 功能:去除指定目錄里面后綴為.dll和.pdb文件的只讀屬性。 放置的路徑如下: 4、在預先生成事件命令行里面調用此批處理文件 命令為:call $(SolutionDir)BeforeBuild.bat 解釋:調用并執行解決方案路徑下面的BeforeBuild.bat 文件,這樣在生成事件之前會先將目標文件夾里面的.dll文件和.pdb文件去只讀, 然后在執行刪除復制操作,這樣就不會報錯了。 回到頂部

DS05:分享一個有意思的東西

1、背景

如果你的開發任務中存在多個項目(這里指的是很多很多哦),那么每次編譯的時候就會花很長的時間,

如果可以讓編譯結束之后給出彈窗提示,那么我們就可以在等待的這段時間里做點其他有意思的事情了,有沒有很心動啊?

2、操作方法

我們在最后一個項目后期生成事件命令中調用以下的批處理文件:

命令:call?$(SolutionDir)AfterBuild.bat

3、解釋如下

輸出一段話 msgbox "項目已全部編譯完成!" ?到myTip.vbs文件中去(注意:沒有的話會新建一個)。

然后執行這個新生成的vbs(visual basic script)文件,彈出提示框。

最后再刪除此文件。

那么,當最后一個項目編譯完成之后,就會彈出如下的彈窗提示我們繼續coding了。

有沒有很贊啊,其實有時候中間等待的時間都夠我玩一把俄羅斯方塊了,說多了都是淚。。。

回到頂部

DS06、需要了解的其他知識 1、編譯的步驟簡介 》新建一個項目的話,bin文件夾里面是空的,obj/Debug文件夾里面的TempPE里面也是空的,但是obj/Debug本身不是空的。 》當點擊生成項目的時候,bin文件夾中出現了兩個文件,一個.dll文件和一個同名的.pdb文件。 ? ?obj/Debug文件夾里面也有一個.dll文件和一個同名的.pdb文件,與bin文件相同。 ? ?但是另外還有一個.csprojResolveAssemblyReference.cache文件。 PS:所有編譯才新生成的文件,都在.csproj.FileListAbsolute.txt文件里面有提示。 2、運行后期生成事件 ? 3、vs編譯過程中常見的宏 可以使用以下任意宏來指定文件位置,或在存在多重選擇的情況下獲取輸入文件的實際名稱,這些宏不區分大小寫。 說明

$(ConfigurationName)

當前項目配置的名稱(例如,“Debug|Any CPU”)。

$(OutDir)

輸出文件目錄的路徑,相對于項目目錄。這解析為“輸出目錄”屬性的值。它包括尾部的反斜杠“\”。

$(DevEnvDir)

Visual Studio 2005 的安裝目錄(定義為驅動器 + 路徑);包括尾部的反斜杠“\”。

$(PlatformName)

當前目標平臺的名稱。例如“AnyCPU”。

$(ProjectDir)

項目的目錄(定義為驅動器 + 路徑);包括尾部的反斜杠“\”。

$(ProjectPath)

項目的絕對路徑名(定義為驅動器 + 路徑 + 基本名稱 + 文件擴展名)。

$(ProjectName)

項目的基本名稱。

$(ProjectFileName)

項目的文件名(定義為基本名稱 + 文件擴展名)。

$(ProjectExt)

項目的文件擴展名。它在文件擴展名的前面包括“.”。

$(SolutionDir)

解決方案的目錄(定義為驅動器 + 路徑);包括尾部的反斜杠“\”。

$(SolutionPath)

解決方案的絕對路徑名(定義為驅動器 + 路徑 + 基本名稱 + 文件擴展名)。

$(SolutionName)

解決方案的基本名稱。

$(SolutionFileName)

解決方案的文件名(定義為基本名稱 + 文件擴展名)。

$(SolutionExt)

解決方案的文件擴展名。它在文件擴展名的前面包括“.”。

$(TargetDir)

生成的主輸出文件的目錄(定義為驅動器 + 路徑)。它包括尾部的反斜杠“\”。

$(TargetPath)

生成的主輸出文件的絕對路徑名(定義為驅動器 + 路徑 + 基本名稱 + 文件擴展名)。

$(TargetName)

生成的主輸出文件的基本名稱。

$(TargetFileName)

生成的主輸出文件的文件名(定義為基本名稱 + 文件擴展名)。

$(TargetExt)

生成的主輸出文件的文件擴展名。它在文件擴展名的前面包括“.”。

?

? 回到頂部 2015年1月4日16:45:51 ? ? ? ? ? ? ?

?

轉載于:https://www.cnblogs.com/selonsy/p/dll-build.html

總結

以上是生活随笔為你收集整理的多项目开发下的dll文件管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。