그래, 솔루션을 찾는 데 문제가 있음을 알게되었습니다. 시각적 인 스튜디오 속성을 사용하는 솔루션이 많이 있습니다. 문제는 비주얼 스튜디오를 사용하지 않고 csc.exe를 사용하여 코드를 컴파일하는 것입니다.Visual Studio가없는 외부 DLL에 내장 된 리소스로 작업하기
여기까지 제가 지금까지 가지고 있습니다.
는
가 Resource.dll
Main.csx
Rsc.csx
a.png
을
을 dll.cmd exe.cmd
이것은
@echo off
csc.exe /target:winexe /reference:Resource.dll /out:Main.exe Main.csx
pause
이
using System;
using System.IO;
using System.Drawing;
using System.Reflection;
using System.Windows.Forms;
namespace EmIm
{
public static class Bck
{
public static Image GetBck()
{
Bitmap bmp = new Bitmap(Assembly.GetExecutingAssembly().GetManifestResourceStream("a.png"));
Image rtn = bmp;
return rtn;
}
}
}
Rsc.csx
@echo off
csc.exe /target:library /resource:a.png /out:Resource.dll Rsc.csx
pause
을 dll.cmd
이
을 exe.cmd하여 .CMD 파일에 대한 코드와 .csx 모든 파일Main.csx
내가 이것을 실행하면3210using System;
using System.IO;
using System.Drawing;
using System.Reflection;
using System.Windows.Forms;
using EmIm;
namespace prg
{
class class_m
{
public static void Main()
{
Form f1 = new Form();
try
{
f1.BackgroundImage = Bck.GetBck();
}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
f1.ShowDialog();
}
}
}
, 나는 '널 (null)'의 값을 표시하는 메시지 박스를 얻을 '스트림'에 대해 유효하지 않은 내가 a.png에 액세스 할 수하기 위해 수행해야 할 어떤 단계
리플렉션을 사용하여 a.png가 어셈블리의 올바른 이름인지 확인했습니다. 어떤 도움이라도 대단히 감사하겠습니다. 감사합니다 :)
배치 파일 태그가 조금 늘어나 있다고 생각합니다! – Compo
Tsk, tsk. GetBck() 메서드는 Assembly.GetExecutingAssembly()가 올바르게 작동 할 수 있도록 [MethodImpl (MethodImplOptions.NoInlining)] 특성이 필요합니다. 왜 누군가가 고의로 이처럼 다리를 찌르는 지 짐작하기 어렵습니다. –