簡體   English   中英

C# 使用來自另一個項目的 class - 添加參考

[英]C# use class from another project - add reference

我在 c# 中的解決方案有問題,在解決方案中我有 2 個項目 project1 和 project2,我有一個問題,因為我在 project1 中使用了 project2 中的功能,所以我需要參考 project2。

構建解決方案后,我在 project2 的 bin/debug 文件夾 dll 文件中看到。

如何使用 project2 中的函數但不創建 dll 文件?

我嘗試右鍵單擊 project1 和 go 中的特定引用到屬性並將本地復制更改為 false 並且 dll 不顯示在文件夾中,但是當我運行代碼時,我得到程序集錯誤。 我該如何解決?

謝謝!

如果我正確理解您的問題,您希望將project2庫包含、嵌入或靜態鏈接到您的project1程序集中。

請參閱@Lavamaster 的答案,了解出色的 .NET 核心 3+ 解決方案。


如果可能的話,這將是痛苦的復雜。

ILMerge這樣的工具可能是您的選擇。

ILMerge 是一個實用程序,可將多個 .NET 程序集合並為一個程序集。 它可以免費使用,並以 NuGet package 的形式提供。

而且我也相信一些混淆器能夠將程序集合並到一個 exe 中。


另一種選擇是將程序集作為資源嵌入並在運行時加載它,但是,您將需要某種共享接口定義,最有可能在共享 dll 中。


所以,除非真的需要; 我建議重新考慮要求。

If you are using .NET Core 3.0 or higher, you can build the project without including any DLL's and stuff, only having the application executable as the output (meaning you won't see your project DLL, any Nuget package DLL's, etc, only the可執行文件)。

你只需要打開CMD,cd到.csproj文件所在的項目目錄,然后運行這個命令: dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true如果你需要發布x86,我認為您必須將win-x64更改為win-x86或類似的東西。

編輯:我應該補充一點,這將增加文件大小,因為它將 .NET Core 打包到可執行文件中。

如果沒有 DLL 文件,您將無法做到這一點。 DLL 是項目 2 的編譯代碼。您需要將其作為項目 1 的依賴項,因此項目 2 DLL 將在那里。 您可以創建一個包含任何共享代碼的項目 3,但是您將在項目 1 和項目 2 的 bin/debug 文件夾中為項目 3 創建一個 DLL。

暫無
暫無

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

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