-
1 # TerryLi3030
-
2 # 熙爸愛釣魚
因為程式(或者相關部件)用到了 net standard 或者 net core,因為跨平臺的原因,所以釋出程式時跟 net fx有些區別。
兩種情況:
1,程式目標框架為 net fx 4.6或者4.7以上的版本,用到了第三方的庫,而且第三方庫是基於 net standard開發的,就會多出很多檔案。
2,如果目標框架是net standard或net core也會這樣。
解決方法:
1,降低目標框架版本,如使用4.5或以下的版本,可能很多三方庫用不了,找替代方案或老版本。
2,無視,雖然檔案多,但檔案體積並不大,現在的硬體配置多個幾十兆不是啥問題。
-
3 # 強哥在修行
,6.5M,複製100多份就有1G了。再加上系統自動生成的系統DLL,加起來超過2G了。所以問題必須解決,不然每次複製釋出都是2G以上,先複製出來,再移除原始碼,再複製到釋出伺服器,這個過程經常需要花費3個小時。以前才100M,幾分鐘就好。
現在說一下初步的解決方法(不是很完美):
1、我沒找到直接不生成系統檔案的辦法。
為不復制。、System.Net.Http.dll
、Oracle.ManagedDataAccess.dll
4、將這幾個檔案放在外面一個Dependencies的資料夾中,讓程式知道這幾個DLL即可。為了解決這個問題,首先是嘗試在配置檔案中修改。可惜,只能是子目錄下的檔案才能這麼幹。因此只能重新想辦法。發現有一個AssemblyResolve方法,寫的程式碼如下:
遇到這3個DLL找不到出錯就按指定的目錄去找。這樣只需要在SVC的建構函式和Page的Load方法中呼叫AddAssemblyResolve即可(雖然專案多,但都有繼承,實際上只需要在一兩個地方修改程式碼即可)。至此,我的程式可以恢復只有100M,也可以正常執行。基本解決問題了。
5、可能有人注意到裡面有“
resources.dll
”相關的程式碼,這是因為在WinForm程式中,老是找不到圖片相關的資原始檔,其實不影響,為此遮蔽這種情況觸發的AssemblyResolve事件。此次,該問題基本算是圓滿解決。但不是完美解決。我期待的完美解決是直接找到設定,能直接不生成那麼多系統檔案。 -
4 # 名字都重複
開啟專案,編譯專案後,會多出來的.user,.sdf,.aps檔案,.suo檔案(隱藏檔案,也可以刪除),debug,relese,ipch資料夾,放心刪除。其他檔案都是有用的,可以上傳原始碼管理器,只要是可以下載、編譯剩下的檔案,就可以編譯透過,執行正常。正常情況下,一個專案資料夾的原始碼,都比較小,都在幾十、幾百kb,幾兆就就很大了(如果沒有新增大的點陣圖檔案)。
-
5 # 牛牛Ok
這是要幹啥這位總經理先生是要複製整個解決方案還是隻是需要編譯後的應用?感覺微軟看了你的解決方案都要笑了,微軟說,我們的vs不是這麼設計的…… 看你刪除的那些檔案,沒一個是編譯後的結果檔案中的,全是編譯過程或者解決方案檔案系統的,感覺你做了很多奇怪的事情,幾乎為了一個偽需求。還是找個靠譜的程式設計師來幫你做吧。
發現bin資料夾下多了很多系統檔案,每個專案下都有,也就是複製了很多份。檔案太多太大了,把編譯好的檔案複製出來好費勁。請問大家有沒有好辦法解決?謝謝!
回覆列表
對於vs專案,只需設定輸出目錄和目標檔名等專案屬性即可。建議您少開房車,多放點時間看看文件,很多問題您自己就能解決。另外一個建議是,沒有必要,儘量不使用最新版本的vs,除了第三方庫和外掛的相容性外,還要考慮使用者的執行環境。