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

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C# 只想要一個exe文件,試試這個方式

admin
2023年12月3日 23:5 本文熱度 1484

前言

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

現(xiàn)在,我們可以通過這篇文章用另一種方式來實現(xiàn)。






開發(fā)環(huán)境:.NET Framework版本:4.8

開發(fā)工具:Visual Studio 2022

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

namespace ClassLibrary1

{

    public class Common

    {

        public int Add(int a,int b)

        {

            return a+b;

        }

    }

}

  1. 將以上類庫生成后,同時引入到主程序中,并將生成的ClassLibrary1.dll放入到Lib文件夾中,最后項目框架如下
  1. 在引用下的兩個dll右鍵->屬性->復制本地改為False,這樣就在生成的時候不會出現(xiàn)在debug目錄下了
  2. 在Lib目錄下的兩個dll右鍵->屬性->生成操作選擇為嵌入的資源
  3. Program文件中注冊AssemblyResolve事件,事件內(nèi)的代碼如下:

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. 最后在窗體中分別實現(xiàn)調(diào)用:

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);

}

 實現(xiàn)效果


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

可參考文章



C#資源文件的使用




如何將程序打包成exe




C# 反射之動態(tài)生成dll/exe




Visual Studio 預先/后期 生成事件


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