在 Rider 中,創建一個簡單的 Hello World 控制臺專案后,我可以在以下兩種輸出型別中進行選擇:控制臺應用程式和類別庫。前者生成可運行的 exe 和可運行的 DLL,而后者生成不可運行的 DLL。可運行的 DLL 顯然需要通過 dotnet CLI 驅動程式運行。
區分前者和后者 DLL 的正確術語是什么?我不確定區別是什么,除了一個可運行而一個不可運行。
另外,為什么可運行 DLL 的大小比 exe 小 30 倍?
uj5u.com熱心網友回復:
與您偏好的 IDE 無關,即。即使從 CLI 執行此操作dotnet new console -n myapp,然后運行dotnet build將(現在使用 .NET6)生成一個myapp\bin\debug\net6.0目錄,您可以在其中獲得特定于平臺的 exe和跨平臺的 dll。
該 exe 是您的應用程式的平臺特定(OS/CPU 架構)可執行檔案,其中包含您的作業系統/平臺所需的所有內容(這是您詢問的 30 倍權重,不確定其中到底有什么),另一方面,dll 會如果通過 .NET 運行時(即。dotnet myapp.dll)運行,則可以在任何平臺上作業。
您可以通過直接呼叫來運行 .exe(在您當前的 OS/CPU 架構上):.\myapp.exe
您可以在任何安裝了 .NET 運行時(如您所說的驅動程式)(在您的構建版本中)的機器上運行 .dll,其中 dotnet CLI 在路徑變數中安裝為:dotnet myapp.dll.
前一個 dll 是您的應用程式的跨平臺二進制檔案,可以使用適當的 .NET 運行時執行,后者是一個 .NET 庫 dll,它不是<OutputType>Exe<OutputType>(而是庫)并且不打算執行(沒有Main() 中的某處),但旨在由其他 DLL(或您愿意的專案)參考。
在此處閱讀有關平臺特定 exe 的更多資訊:https ://docs.microsoft.com/en-us/dotnet/core/deploying/#produce-an-executable
您可以在此處閱讀有關發布 exe 的更多資訊:https ://docs.microsoft.com/en-us/dotnet/core/deploying/#publish-framework-dependent
exe 輸出是由<OutputType>Exe</OutputType>.csproj 專案檔案內部強制執行的。
此外,您可能會考慮了解單檔案可執行檔案(此處:https ://docs.microsoft.com/en-us/dotnet/core/deploying/single-file/overview ),您甚至可以在其中打包 .NET 運行時在其中,因此您的目標機器甚至不需要dotnet(在路徑變數中)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/468872.html
