色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

發現以前編譯完才100M

錢良釵2年前12瀏覽0評論

發現以前編譯完才100M?

非常感謝大家的答復,我也花了兩天時間研究這個東西。由于項目中共有477個項目,僅訪問Oracle數據庫的

Oracle.ManagedDataAccess.dll

,6.5M,復制100多份就有1G了。再加上系統自動生成的系統DLL,加起來超過2G了。所以問題必須解決,不然每次復制發布都是2G以上,先復制出來,再移除源代碼,再復制到發布服務器,這個過程經常需要花費3個小時。以前才100M,幾分鐘就好。

現在說一下初步的解決方法(不是很完美):

1、我沒找到直接不生成系統文件的辦法。

2、由于我發布在Windows平臺上,可以考慮刪除一些系統自帶的DLL。于是我寫了一個小程序,用批處理調用這個小程序,遇到相關的系統文件就刪除。(包括移除源代碼,如

.cs

文件)代碼不全,幾十個系統文件都刪除。刪除完畢后,只剩下100M左右了,恢復以前的大小。在解決方案中設置

Oracle.ManagedDataAccess.dll

為不復制。

3、發布運行發現,運行不成功。顯然刪除的文件太多了。通過調試發現

netstandard.dll

System.Net.Http.dll

Oracle.ManagedDataAccess.dll

這三個文件不能缺少。于是修改刪除代碼,保留這三個文件。但是大小還是有1G多。顯然不能不刪除這三個文件。如果大家的項目不多,不會復制100多次這幾個文件,那么到此為止,就能解決問題了。但是我還沒有解決完畢。

4、將這幾個文件放在外面一個Dependencies的文件夾中,讓程序知道這幾個DLL即可。為了解決這個問題,首先是嘗試在配置文件中修改。可惜,只能是子目錄下的文件才能這么干。因此只能重新想辦法。發現有一個AssemblyResolve方法,寫的代碼如下:

遇到這3個DLL找不到出錯就按指定的目錄去找。這樣只需要在SVC的構造函數和Page的Load方法中調用AddAssemblyResolve即可(雖然項目多,但都有繼承,實際上只需要在一兩個地方修改代碼即可)。至此,我的程序可以恢復只有100M,也可以正常運行。基本解決問題了。

5、可能有人注意到里面有“

resources.dll

”相關的代碼,這是因為在WinForm程序中,老是找不到圖片相關的資源文件,其實不影響,為此屏蔽這種情況觸發的AssemblyResolve事件。此次,該問題基本算是圓滿解決。但不是完美解決。我期待的完美解決是直接找到設置,能直接不生成那么多系統文件。

盡管不完美,我還是先答復了,避免大家再費勁琢磨。如果有朋友找到直接不生成系統Dll的設置,煩請告知。畢竟第一次復制出來,運行批處理刪除文件時,復制還是有1G多,挺浪費時間,所以還是想解決。謝謝。