我從來沒有真正理解 C# 應用程式的技術要求。我知道 Windows 10 默認安裝了一些 .NET 版本。但是每當我用 c# 撰寫控制臺應用程式并將編譯后的 .exe 檔案復制到另一臺計算機時,.exe 檔案永遠不會運行(如果使用 net-core 或 net-framework 編譯則無關緊要)。它總是缺少很多依賴項。所以我總是要么將大量的 dll 檔案復制到與 .exe 檔案相同的檔案夾中,要么將其發布為一個獨立的應用程式,這是可笑的巨大(130 MB .exe 檔案用于 100 行應用程式,沒有什么特別的)。
另一方面,我可以創建一個 Windows 服務,編譯它并使用它。編譯后的 service-exe 非常小(大約 30 kb),可以通過 cmd.exe(“sc create [...]”)安裝。我在 Windows 10 VM 上對此進行了測驗。它運行沒有問題。
我做對了嗎?為什么 Windows 服務可以在沒有 .dll 檔案的情況下運行,而控制臺應用程式卻不能?由于 Windows 10 安裝了很多 .net 應用程式,我假設每個 c# 應用程式都應該在 Windows 10 上運行,而無需添加 .dll 檔案。
uj5u.com熱心網友回復:
如果目標計算機沒有安裝您要定位的 .Net 運行時,您有兩個選擇:
- 安裝運行時,然后運行應用程式。
- 將運行時與應用程式捆綁在一起,作為單獨的檔案或全部在同一個 exe 中。
選項 2 僅適用于 .Net Core 和 .Net 5 及更高版本。對于 .Net Framework(4 及更低版本),您必須選擇選項 1。
您可以通過查看一些注冊表值來檢測安裝了哪些版本的 Framework:https : //docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-已安裝
.Net Framework 4.6.1 包含在 Windows 10 中(我認為是基礎版,但也是 1511 版)。來源。這就是為什么您的 Windows 服務無需執行任何操作即可正常運行的原因。
您可以從https://dotnet.microsoft.com/安裝 .Net Core/5 運行時,這樣您就不需要在二進制檔案中包含運行時(如果您愿意)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/364125.html
