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

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

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

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

前言

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

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






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

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

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

namespace ClassLibrary1

{

    public class Common

    {

        public int Add(int a,int b)

        {

            return a+b;

        }

    }

}

  1. 將以上類庫生成后,同時引入到主程序中,并將生成的ClassLibrary1.dll放入到Lib文件夾中,最后項(xiàng)目框架如下
  1. 在引用下的兩個dll右鍵->屬性->復(fù)制本地改為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. 以上,其實(shí)就完成了整個操作,但是由于ClassLibrary1項(xiàng)目是我們自己寫的,隨時會涉及到改動,每次都復(fù)制會比較麻煩,而且還有忘記的風(fēng)險,所以,之前文章中寫的生成事件就有用武之地了,我們在ClassLibrary1的生成后事件中添加以下命令,這樣每次生成后就會自動復(fù)制到Lib目錄了:

copy "$(TargetPath)" "$(SolutionDir)\$(SolutionName)\Lib"

  1. 最后在窗體中分別實(shí)現(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);

}

 實(shí)現(xiàn)效果


☛☛☛點(diǎn)擊此處下載源碼☚☚☚

可參考文章



C#資源文件的使用




如何將程序打包成exe




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




Visual Studio 預(yù)先/后期 生成事件


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