簡體   English   中英

.NET Core和.NET Standard項目不進行增量構建

[英].NET Core and .NET Standard projects don't do an incremental build

我在桌面解決方案中使用.NET標准庫,因此可以在桌面和Web解決方案之間共享這些庫。 但是,我現在看到增量構建問題。 有沒有其他人經歷過或設法解決?

我可以看到.NET標准庫具有一些增量生成功能,因為如果我在命令行上使用“ dotnet build”來生成它們,例如需要1秒,然后在該庫中進行代碼更改並運行再次需要2秒。 如果我第三次跑步,這可以回到1秒。

但是,在純凈的.NET Framework應用程序(例如控制台應用程序或wpf應用程序)中,傳統上,如果您不進行任何代碼更改,則在Visual Studio中甚至不會嘗試構建項目。 它只是說“ 1最新”。 我看到.NET標准庫總是重新復制到輸出目錄,並且它們還會導致我的整個WPF項目每次都重新生成。 一段時間后,如果每次更改代碼都需要5秒鍾的時間,這就會變得很煩人!

我至少對您有部分答案。 微軟解釋了每次復制二進制文件的問題,因為基本上不存在支持,而是更新到更高的目標框架版本

在這一點上,我們不對工具隨附的compat墊片進行任何智能修整,因此最終將它們全部復制。 如果您(或您的依賴項)不依賴它們,則可以安全地刪除/不部署它們,但是盲目執行可能會破壞您的某些依賴項。

而這應該在4.7.1中修復

值得一提的是,在.NET Framework 4.7.1及更高版本中,您無需為.NET Standard部署任何其他文件。 今天,如果您針對Xamarin或.NET Core,情況就是這樣。

至於為什么總是復制,而不是應該選擇性地復制,我不確定。 我已經搜索過構建日志,並且我相信這些文件沒有正確地添加到構建目標的輸出列表中,但是很難診斷。 Visual Studio還具有完全避免調用MSBuild的聰明方法,因此MSBuild腳本中跳過目標的邏輯甚至不必運行。 Visual Studio主要是一個黑匣子,但是基於您和我所觀察到的行為,我懷疑這種邏輯也被打破了。

這是一個令人沮喪的問題,因為仍然有充分的理由將舊版本的.NET Framework作為目標,例如,如果將庫分發給了可能使用Visual Studio 2013對其構建的客戶,並且無法期望對其進行更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM