2009-02-26 11 views
1

に埋め込まれたリソースにアクセスします。 プロジェクトのアイコンを選択したいが、どちらも失敗する: 1-フォームプロパティウィンドウ - >アイコン(* .icoファイルを選択) コンパイル時エラーが発生し、IronPython.targetsファイルに関連するは、私はIronPythonのStudioでWindowsフォームアプリケーションを開発していますIronPythonの

"IronPythonCompilerTask" タスク が予期せずに失敗しました。 System.ArgumentNullException:値 はnullにすることはできません。 「埋め込まれたリソース」 今、私はシステムを使用することはできませんに「ビルドアクション」を変更する、(>既存項目 - - >追加プロジェクト)とそのプロパティに

2 - 私はプロジェクトに*の.icoファイルを追加します。ランタイムで

self.Icon =アイコン(。Assembly.GetExecutingAssembly()GetManifestResourceStream( 'IronPythonWinApp.myIcon.ico'))

:Reflection.Assemblyこのリソース 私のコードへのアクセスを得るためにそれは例外をスローする:

呼び出さメンバーは誰もがIronPythonのリサイズにアイコンを追加するためのより良い(最高?)の方法を知ってい動的アセンブリに

をボットがサポートされていますか?

おかげ

答えて

5

IronPythonのは、動的スクリプト言語です。実行時に、アセンブリにコンパイルされるのではなく、スクリプトファイル自体から解釈されます。コンパイルされたアセンブリがないため、埋め込みリソースを持つことはできません。 IronPythonのフォームにアイコンを追加するには、次の2つの方法があります。

まず、アイコンをpythonスクリプトと一緒にルーズファイルとして含めることができます。アイコンファイル名をSystem.Drawing.Iconコンストラクタに渡すことによって、アイコンオブジェクトを作成できます。このシナリオでは、メインのpythonスクリプトとアイコンが同じディレクトリに配置されている例を示します。このスクリプトは、ディレクトリを検索しhereを発見したソリューションを使用しています。

import clr 
clr.AddReference('System.Drawing') 
clr.AddReference('System.Windows.Forms') 

import os 
import __main__ 
from System.Drawing import Icon 
from System.Windows.Forms import Form 

scriptDirectory = os.path.dirname(__main__.__file__) 
iconFilename = os.path.join(scriptDirectory, 'test.ico') 
icon = Icon(iconFilename) 

form = Form() 
form.Icon = icon 
form.ShowDialog() 

また、C#で記述された.NETアセンブリに埋め込みリソースとして含まれているアイコンを読み込むこともできます。

import clr 
clr.AddReference('System.Drawing') 
clr.AddReference('System.Windows.Forms') 

from System.Drawing import Icon 
from System.Reflection import Assembly 
from System.Windows.Forms import Form 

assembly = Assembly.LoadFile('C:\\code\\IconAssembly.dll') 
stream = assembly.GetManifestResourceStream('IconAssembly.Resources.test.ico') 
icon = Icon(stream) 

form = Form() 
form.Icon = icon 
form.ShowDialog()