さて、解決策を見つけるのが難しい問題に遭遇しました。ビジュアルスタジオのプロパティを使用するソリューションはたくさんあります。問題は私がビジュアルスタジオを使用していないことです。私はcsc.exeを使用して自分のコードをコンパイルしています。ビジュアルスタジオのない外部DLLに埋め込まれたリソースを使って作業する
これまで私がこれまで持っていたことは次のとおりです。
は
がResource.dll
Main.csx
Rsc.csx
a.png
を
をdll.cmd exe.cmd
これは.cmdのファイルと.csxファイルのコードのすべての
が
@echo off
csc.exe /target:winexe /reference:Resource.dll /out:Main.exe Main.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;
}
}
}
を
@echo off
csc.exe /target:library /resource:a.png /out:Resource.dll Rsc.csx
pause
をdll.cmd exe.cmdです
メイン.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();
}
}
}
私はこれを実行すると、私は「NULL」の値を表示するメッセージボックスを取得するには、私はa.pngにアクセスできるようにするために必要なんどのような手順「ストリーム」
のために有効ではありません反射で、私はa.pngがアセンブリ内の正しい名前であることを確認しました。どんな助けでも大歓迎です。ありがとう:)
バッチファイルのタグが少し伸びていると思います! – Compo
Tsk、tsk。 GetBck()メソッドは、Assembly.GetExecutingAssembly()が正常に動作するように[MethodImpl(MethodImplOptions.NoInlining)]属性を必要とします。なぜ誰かが意図的にこのような自分の脚を刺すだろうと推測するのは難しいです。 –