this page에 작성된 제프리 리히터 (Jeffrey Richter)의 방법을 사용하여 .dll 라이브러리를 내 응용 프로그램에 병합하기 위해 새로운 아이디어를 생각한 이후로 내 other question을 죽이기로 결정했습니다. 그래서 내 .dll 파일을 임베디드 리소스로 추가하고이를 참조로 추가했습니다..NET에서 .dll 어셈블리 병합
...
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
string[] args = Environment.GetCommandLineArgs();
if (args.Length > 1)
_in = args[1];
SingleInstanceController controller = new SingleInstanceController();
controller.Run(args);
AppDomain.CurrentDomain.AssemblyResolve += (sender, argsx) =>
{
String resourceName = "AssemblyLoadingAndReflection." +
new AssemblyName(argsx.Name).Name + ".dll";
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
{
Byte[] assemblyData = new Byte[stream.Length];
stream.Read(assemblyData, 0, assemblyData.Length);
return Assembly.Load(assemblyData);
}
}
;
는 뭔가 다른에 resourceName이 변경 해야하는 건가요 : 그럼 Program.cs에서, 나는이 추가 (나는 그가 게시 된 코드가 이동하도록되어 아무 생각이 없다)? 올바른 장소에 올바르게 추가 했습니까?
이제 문제는 어셈블리를 찾지 못하고로드하지 못하고 내가 잘못했는지 확실하지 않다는 것입니다. 어떤 도움을 주시면 감사하겠습니다.
그냥 호기심이 많습니다. 심지어 왜 (효과적으로) 정적으로 DLL을 링크하는 것을 귀찮게합니까? –
내 프로그램을 배포하고 싶지 않기 때문에 사용자가 쓸모없는 파일을 10-15 개 발견하게됩니다. – Iceyoshi
어쨌든 사용자가 프로그램 파일에서 왜 파고 들어 있습니까? 하위 디렉토리에 설치하고 완료하십시오. 제 말은, "DLL"의 "DL"은 당신이 알고있는 "Dynamic Link"를 의미합니다. –