C# Console App生成的 dll文件

在使用 dotnet 8.0 創建一個 C# console app后,執行完編譯操作,會發現除了生成可執行文件外,還生成一個 dll文件。

 $ls
ConsoleApp1            ConsoleApp1.dll  ConsoleApp1.runtimeconfig.json
ConsoleApp1.deps.json  ConsoleApp1.pdb
 $ file ConsoleApp1
ConsoleApp1: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=bf7702fd9cd2edf0452d7e804bf305b1ea8b0f21, stripped
$ file ConsoleApp1.dll 
ConsoleApp1.dll: PE32 executable (console) Intel 80386 Mono/.Net assembly, for MS Windows, 3 sections

可執行文件是一個app host, 它是一個native binary; dll文件則是一個 managed app, 可以用 dotnet ConsoleApp1.dll 執行。執行 可執行文件的時候,內部會調用 dll.

$ ./ConsoleApp1 
hello, world
$ dotnet ConsoleApp1.dll 
hello, world

?如果按照如下的方式執行,則會輸出一個執行加載過程的日志文件:

$ COREHOST_TRACE=1 COREHOST_TRACEFILE=out.txt ./ConsoleApp1

日志文件開頭的一部分如下:

Tracing enabled @ Wed Jul  9 16:16:59 2025 GMT
--- Invoked apphost [version: 8.0.17 @Commit: 77545d6fd5ca79bc08198fd6d8037c14843f14ad] main = {
./ConsoleApp1
}
The managed DLL bound to this executable is: 'ConsoleApp1.dll'
Looking for architecture-specific install_location file in '/etc/dotnet/install_location_x64'.
Found registered install location '/usr/lib/dotnet'.
Using global installation location [/usr/lib/dotnet] as runtime location.
Reading fx resolver directory=[/usr/lib/dotnet/host/fxr]
Considering fxr version=[8.0.17]...
Detected latest fxr version=[/usr/lib/dotnet/host/fxr/8.0.17]...
Resolved fxr [/usr/lib/dotnet/host/fxr/8.0.17/libhostfxr.so]...
Invoking fx resolver [/usr/lib/dotnet/host/fxr/8.0.17/libhostfxr.so] hostfxr_main_startupinfo

參考:

Anatomy of a .NET app

How the dotnet CLI tooling runs your code · Performance is a Feature!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90506.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90506.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90506.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【AI】環境——深度學習cuda+pytorch配置

文章目錄關鍵組件及關系顯卡驅動GPU DriverCUDACUDA ToolkitcuDNNPytorch各組件版本選擇驅動程序CUDA查看驅動及CUDA的最大支持版本CUDA Toolkit選自定義安裝檢驗無法識別nvcccuDNNcondapip換源conda管理py包conda 換源查看列表、創建、克隆、激活、刪除conda包管理包安裝原則設…

觀眾信息設置與統計(視頻高級分析與統計功能)

Web播放器(POLYV-html5-player)支持設置觀眾信息參數,設置后在播放器上報的觀看日志中會附帶觀眾信息,這樣用戶就可以通過管理后臺的統計頁面或服務端API來查看特定觀眾的視頻觀看情況了。 一、觀眾信息設置 播放器設置觀眾信息參…

《數據庫》 MySQL庫表操作

1. SQL語句基礎 1.2 SQL簡介 SQL:結構化查詢語言(Structured Query Language),在關系型數據庫上執行數據操作、數據檢索以及數據維護的標準語言。使用SQL語句,程序員和數據庫管理員可以完成如下的任務 改變數據庫的結構 更改系統的安全設置…

DSP的基礎平臺搭建

1、CCS6.0的安裝安裝步驟這里就不說了,只談論最可能遇到的問題:可以看到為需要關閉防火墻和掃描;在這里將其都關閉,然后可以斷掉網絡,關閉聯想管家,可能還是會出現防火墻提示,但是可以安裝&…

下一代防火墻-終端安全防護

實驗設備1、 山石網科(hillstone)系列下一代防火墻(實訓平臺v1.0中hillstone設備)2、 三層交換機一臺(實訓平臺v1.0中cisco vios l2設備)3、 二層交換機一臺(實訓平臺v1.0中cisco iol switch設備…

Scala實現網頁數據采集示例

Scala 可以輕松實現簡單的數據采集任務,結合 Akka HTTP(高效HTTP客戶端)和 Jsoup(HTML解析庫)是常見方案。Scala因為受眾比較少,而且隨著這兩年python的熱門語言,更讓Scala不為人知,…

【IO復用】五種IO模型

文章目錄五種IO模型Linux設計哲學BIONIOAIOSIOIO多路復用五種IO模型 Linux設計哲學 在linux系統中,實際上所有的I/O設備都被抽象為了文件這個概念,一切皆文件,磁盤、網絡數據、終端,甚至進程間通信工具管道pipe等都被當做文件對…

FeatherScan v4.0 – 適用于Linux的全自動內網信息收集工具

前言 在平時滲透打靶的時候,經常要自己手工輸入命令,做各種基本的信息收集,非常的繁瑣,所以自研了一款工具,這款工具沒有接入AI,因為不合適,接入了AI的話在一些不能上網的環境下進行信息收集&a…

如何精準篩選優質SEO服務資源?

核心要點: 中小企業選擇SEO服務常陷困惑——效果難量化、承諾不透明、策略模糊化。本文剖析核心痛點,拆解技術合規性、策略透明度、行業經驗匹配度等關鍵篩選維度,提供一套清晰的評估路徑,助您在復雜市場中找到真正專業的合作伙伴…

在教育領域中,如何通過用戶ID跑馬燈來對視頻進行加密?

文章目錄前言一、什么是用戶跑馬燈二、用代碼如何實現用戶ID跑馬燈的功能三、如何通過用戶ID跑馬燈來對視頻進行加密?總結前言 在教育領域,優質視頻課程易遭非法傳播。為強化版權保護與責任追溯,引入基于用戶ID的跑馬燈水印技術成為有效手段…

MCP協議:AI時代的“萬能插座”如何重構IT生態與未來

MCP協議:AI時代的“萬能插座”如何重構IT生態與未來 在人工智能技術爆炸式發展的浪潮中,一個名為Model Context Protocol(MCP) 的技術協議正以驚人的速度重塑IT行業的底層邏輯。2024年11月由Anthropic首次發布,MCP在短…

同步,異步復位問題

1.同步復位的基本原理是,復位信號僅在時鐘的有效邊沿影響或重置觸發器的狀態。復位的主要目標之一是使 ASIC 在仿真時進入已知狀態。由于復位樹的扇出較大,復位信號相對于時鐘周期可能成為 “晚到信號”。即使復位信號會通過復位緩沖樹進行緩沖&#xff…

數組和指針回顧,練習與解析

代碼見:登錄 - Gitee.com 1.數組和指針練習與解析 1.1數組名 1.sizeof(數組名),這里的數組名表示整個數組,計算的是整個數組的大小。 2.&數組名,這里的數組名表示整個數組,取出的是整個數組的地址。 3.除此之…

【牛客刷題】活動安排

文章目錄一、題目介紹二、解題思路2.1 核心問題2.2 貪心策略2.3 正確性證明三、算法分析3.1 為什么按結束時間排序?3.2 復雜度分析3.3 算法流程圖解3.3.1 流程圖說明3.3.2 關鍵步驟說明四、模擬演練五、完整代碼一、題目介紹 活動安排 題目描述 給定 nnn 個活動&am…

第1講:C語言常見概念

目錄 一、什么是C語言? 二、C語言的歷史與成就 三、編譯器選擇(VS2022) 1、編譯與鏈接 2、編譯器對比 3、VS2022的優缺點 四、VS項目與源文件、頭文件介紹 五、第一個C語言程序 六、main函數 七、printf和庫函數 八、關鍵字介紹 …

WinUI3入門18:從APP打開商店鏈接以及實現內購

初級代碼游戲的專欄介紹與文章目錄-CSDN博客 我的github:codetoys,所有代碼都將會位于ctfc庫中。已經放入庫中我會指出在庫中的位置。 這些代碼大部分以Linux為目標但部分代碼是純C的,可以在任何平臺上使用。 源碼指引:github源…

BI布局拖拽 (1) 深入react-gird-layout源碼

因為有個拖拉拽的需求,類似于quickBi那樣的效果。在網上調研了一下發現react-grid-layout實現效果類似,但其也有局限性,比如不支持嵌套,不支持在多個gridLyaout之間互相拖拽。 要求:基于react-grid-layout的思路&#…

CentOS環境搭建-快速升級G++版本

在CentOS環境中快速升級G編譯器版本,對于追求最新語言特性的開發者來說至關重要。由于CentOS默認的軟件倉庫可能不提供G的最新版本,我們通常需要借助第三方軟件源,如Developer Toolset或使用Spack等包管理器來完成這一任務。下面將詳細介紹兩…

分布式接口冪等性的演進和最佳實踐,含springBoot 實現(Java版本)

一、背景:為什么需要冪等性 在微服務、分布式架構下,網絡不可靠、請求重試機制(如前端超時重發、客戶端重發、網關重試、消息消費失敗重試等)會帶來重復請求,如果接口沒有冪等性,可能導致: 重復…

OGRE 3D----6. 背景圖片渲染實現詳解

1. 背景圖片渲染原理 1.1 渲染隊列機制 Ogre3D 使用渲染隊列(Render Queue)來控制對象的渲染順序。背景圖片需要在所有其他對象之前渲染,因此我們將其設置為 RENDER_QUEUE_BACKGROUND。 1.2 視圖變換控制 為了讓背景圖片始終保持在場景的最遠處,我們需要: 使用單位投影…