Okay, so habe ich ein Problem, dass ich Probleme habe, eine Lösung zu finden. Es gibt viele Lösungen mit visuellen Studios Eigenschaften. Das Problem ist, dass ich keine Visual Studios verwende, ich benutze csc.exe, um meinen Code zu kompilieren.Arbeiten mit eingebetteten Ressourcen in externen DLL, ohne visuelle Studios
Hier ist, was ich bisher habe.
exe.cmd
dll.cmd
Resource.dll
Main.csx
Rsc.csx
a.png
Diese
ist der gesamte Code für die .cmd-Dateien und Dateien .csx
exe.cmd
@echo off
csc.exe /target:winexe /reference:Resource.dll /out:Main.exe Main.csx
pause
dll.cmd
@echo off
csc.exe /target:library /resource:a.png /out:Resource.dll Rsc.csx
pause
Rsc.csx
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;
}
}
}
Haupt.csx
using 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();
}
}
}
Als ich das laufen, ich ein messagebox erhalten, die Wert von ‚Null‘ anzeigt, ist nicht gültig für ‚Strom‘
Welche Schritte muss ich a.png in der Lage sein ergreifen müssen, um Zugang Mit Reflektion habe ich überprüft, ob a.png der korrekte Name in der Assembly ist. Jede Hilfe würde sehr geschätzt werden. Danke :)
Ich denke, dass das Batch-Datei-Tag es ein wenig dehnt! – Compo
Tsk, tsk. Die Methode GetBck() benötigt das Attribut [MethodImpl (MethodImplOptions.NoInlining)], damit Assembly.GetExecutingAssembly() ordnungsgemäß funktionieren kann. Es ist schwer zu erraten, warum irgendjemand sein Bein so absichtlich erstechen würde. –