C#把dll分別放在指定的文件夾的方法步驟
C#客戶端程序,生成后是一個(gè)exe,如果帶有大量的dll,那么dll和exe會(huì)混亂在一起,看起來非?;靵y,我們可以建立一個(gè)文件夾,把dll放進(jìn)去,這樣看起來就非常的清晰美觀。
一共有二種方法
第一種,配置方法。
1.我們建立一個(gè)winform程序,對(duì)2個(gè)dll分別引用,調(diào)用里面的方法

生成后的文件是這樣的

2.打開App.config文件夾,其中dll和dll/2相當(dāng)于文件夾
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<!--<publisherPolicy apply="yes" />這句不要也是可以的-->
<probing privatePath="dll;dll/2" />
</assemblyBinding>
</runtime>
</configuration>3.選擇所有的dll,把復(fù)制本地設(shè)置成 FALSE

4.打開項(xiàng)目的exe路徑,分別建立dll文件夾,把其中一個(gè)dll放進(jìn)去

建立dll/2文件夾,把另一個(gè)dll放進(jìn)去


5.文件夾的效果
WindowsFormsApp4.exe
WindowsFormsApp4WindowsFormsApp4.exe.config
dll
...../ClassLibrary1.dll
...../2/ClassLibrary2.dll
6.效果,這樣就比較好看一些。

第二種,代碼方法
1.同樣建立一個(gè)項(xiàng)目,選擇所有的dll,把復(fù)制本地設(shè)置成 FALSE

2.在窗體的初始化出寫入

AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
string path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"dll2\");
path = System.IO.Path.Combine(path, args.Name.Split(',')[0]);
path = String.Format(@"{0}.dll", path);
return System.Reflection.Assembly.LoadFrom(path);
}3.在項(xiàng)目的debug文件夾中,建立代碼中的名字dll2文件夾,把所有的dll扔進(jìn)去即可。

4.代碼
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
}
private void Form1_Load(object sender, EventArgs e)
{
ClassLibrary1.Class1 c = new ClassLibrary1.Class1();
ClassLibrary2.Class1 c1 = new ClassLibrary2.Class1();
MessageBox.Show(c.A() + c1.B());
}
/// <summary>
/// 對(duì)外解析dll失敗時(shí)調(diào)用
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
/// <returns></returns>
static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
string path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"dll2\");
path = System.IO.Path.Combine(path, args.Name.Split(',')[0]);
path = String.Format(@"{0}.dll", path);
return System.Reflection.Assembly.LoadFrom(path);
}
}
}到此這篇關(guān)于C#把dll分別放在指定的文件夾的方法步驟的文章就介紹到這了,更多相關(guān)C# dll指定文件夾內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于C#解決庫存扣減及訂單創(chuàng)建時(shí)防止并發(fā)死鎖的問題
這篇文章主要介紹了基于C#解決庫存扣減及訂單創(chuàng)建時(shí)防止并發(fā)死鎖的問題,很多開發(fā)人員對(duì)于這個(gè)問題的排查起來是比較困難的,而生產(chǎn)生的原因多種多樣,很多人認(rèn)是因?yàn)楸碇械臄?shù)據(jù)太多了同時(shí)操作的人多人才會(huì)產(chǎn)生這種錯(cuò)誤,下面我們來還原一下死鎖的過程2022-05-05
C#調(diào)用DeepSeek?API的兩種實(shí)現(xiàn)方案
DeepSeek(深度求索)?最近可謂火爆的一塌糊涂,具體的介紹這里不再贅述,您可以各種搜索其信息,即使您不搜索,只要您拿起手機(jī),各種關(guān)于?DeepSeek?的新聞、資訊也會(huì)撲面而來的推送到您面前,本文給大家介紹了C#調(diào)用DeepSeek?API的兩種實(shí)現(xiàn)方案,需要的朋友可以參考下2025-02-02
關(guān)于C#操作文件路徑(Directory)的常用靜態(tài)方法詳解
這篇文章主要給大家介紹了關(guān)于C#操作文件路徑(Directory)的常用靜態(tài)方法,Directory類位于System.IO 命名空間,Directory類提供了在目錄和子目錄中進(jìn)行創(chuàng)建移動(dòng)和列舉操作的靜態(tài)方法,需要的朋友可以參考下2021-08-08
通過C#實(shí)現(xiàn)在Word中插入或刪除分節(jié)符
在Word中,分節(jié)符是一種強(qiáng)大的工具,用于將文檔分成不同的部分,每個(gè)部分可以有獨(dú)立的頁面設(shè)置,如頁邊距、紙張方向、頁眉和頁腳等,本文將介紹如何使用一個(gè)免費(fèi)的.NET庫通過C#實(shí)現(xiàn)插入或刪除Word分節(jié)符,需要的朋友可以參考下2024-08-08
C# WinForm國(guó)際化實(shí)現(xiàn)的簡(jiǎn)單方法
這篇文章主要介紹了C# WinForm國(guó)際化實(shí)現(xiàn)的簡(jiǎn)單方法,有需要的朋友可以參考一下2014-01-01

