欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

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

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

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

前言

誠然,在之前的文章中也有寫過將所有文件合入到一個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);

}

 實現效果


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

可參考文章



C#資源文件的使用




如何將程序打包成exe




C# 反射之動態生成dll/exe




Visual Studio 預先/后期 生成事件


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