狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C# 只想要一個exe文件,打包dll進去,試試這個方式

admin
2024年1月24日 23:30 本文熱度 838

導讀

誠然,在之前的文章中也有寫過將所有文件合入到一個exe文件中的方式,一種是通過打包,一種是通過資源文件【文末附帶鏈接】,但是兩個方法到最后運行的時候都是需要釋放出來,所以相對來說還是不夠友好;現在,我們可以通過這篇文章用另一種方式來實現。


開發環境:.NET Framework版本:4.8

開發工具:Visual Studio 2022

實現步驟


  1. 以下測試我們要實現的是集成兩個DLL,一個是自己的項目類庫ClassLibrary1,另一個是使用第三方的Newtonsoft.Json.dll
  2. 在主程序中新建一個Lib文件夾,將Newtonsoft.Json.dll放入進去并引用。
  3. 在項目中新建一個類庫ClassLibrary,并在其中隨便實現一段代碼方便調用

namespace ClassLibrary1

{

    public class Common

    {

        public int Add(int a,int b)

        {

            return a+b;

        }

    }

}

  1. 將以上類庫生成后,同時引入到主程序中,并將生成的ClassLibrary1.dll放入到Lib文件夾中,最后項目框架如下

  1. 在引用下的兩個dll右鍵->屬性->復制本地改為False,這樣就在生成的時候不會出現在debug目錄下了
  2. 在Lib目錄下的兩個dll右鍵->屬性->生成操作選擇為嵌入的資源
  3. Program文件中注冊AssemblyResolve事件,事件內的代碼如下

private static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)

        {

            string assemblyName = Assembly.GetExecutingAssembly().GetName().Name + ".Lib." + new AssemblyName(args.Name).Name + ".dll";

            using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(assemblyName))

            {

                byte[] buffer = new byte[stream.Length];

                stream.Read(buffer, 0, buffer.Length);

                return Assembly.Load(buffer);

            }

        }

  1. 以上,其實就完成了整個操作,但是由于ClassLibrary1項目是我們自己寫的,隨時會涉及到改動,每次都復制會比較麻煩,而且還有忘記的風險,所以,之前文章中寫的生成事件就有用武之地了,我們在ClassLibrary1的生成后事件中添加以下命令,這樣每次生成后就會自動復制到Lib目錄了
copy "$(TargetPath)" "$(SolutionDir)\$(SolutionName)\Lib"
  1. 最后在窗體中分別實現調用

private void button1_Click(object sender, EventArgs e)

        {

           MessageBox.Show(""+new Common().Add(3, 4));

        }


private void button2_Click(object sender, EventArgs e)

        {

            Dictionary<string,object> dic=new Dictionary<string, object>();

            dic.Add("name", "張三");

            dic.Add("age", 20);

            string json = JsonConvert.SerializeObject(dic);

            MessageBox.Show(json);

        }

實現效果


☛☛☛點擊此處下載源碼☚☚☚


該文章在 2024/1/24 23:30:00 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved