![](/img/trans.png)
[英]How do I include dll as reference in nuget that also gets copied as reference when nuget added to project
[英]How do I reference dlls when “added as link” in project?
您需要向程序集添加硬引用並將其Copy Local設置為False,然后在調用程序集之前將程序集從嵌入資源中提取到應用程序目錄。 您無法像想要的那樣引用鏈接(快捷方式)。
關鍵點(在此示例中)和博客文章與示例代碼
這是一個有效的例子。 (EmbeddedReferenceApplication.exe |控制台應用程序)
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Windows.Forms;
using System.Reflection;
using EmbeddedReference; // Hard reference with Copy Local = False
namespace EmbeddedReferenceApplication {
class Program {
static void Main(string[] args) {
AppDomain.CurrentDomain.AssemblyResolve += AppDomain_AssemblyResolve;
MyMain();
}
private static void MyMain() {
EmbeddedReference.MessageHelper.ShowMessage();
}
private static Assembly AppDomain_AssemblyResolve(object sender, ResolveEventArgs args) {
string manifestResourceName = "EmbeddedReferenceApplication.EmbeddedReference.dll"; // You can also do Assembly.GetExecutingAssembly().GetManifestResourceNames();
string path = Path.Combine(Application.StartupPath, manifestResourceName.Replace("EmbeddedReferenceApplication.", ""));
ExtractEmbeddedAssembly(manifestResourceName, path);
Assembly resolvedAssembly = Assembly.LoadFile(path);
return resolvedAssembly;
}
private static void ExtractEmbeddedAssembly(string manifestResourceName, string path) {
Assembly assembly = Assembly.GetExecutingAssembly();
using (Stream stream = assembly.GetManifestResourceStream(manifestResourceName)) {
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
using (FileStream fstream = new FileStream(path, FileMode.Create)) {
fstream.Write(buffer, 0, buffer.Length);
}
}
}
}
}
在EmbeddedReference.dll中
using System;
using System.Collections.Generic;
using System.Text;
namespace EmbeddedReference {
public static class MessageHelper {
public static void ShowMessage() {
Console.WriteLine("Hello World!");
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.