2016-09-19 8 views
0

同じような問題に関してたくさんのスレッドを検索しましたが、うまくいかないようです。私はまったく同じ問題を知っている。デリゲートを追加した後、アセンブリから型をロードできませんでした。C#

だから、あなたがここに見ることができるように、私は、デリゲートとイベントを追加

SellControl.DLL

があります。

public delegate void CashCreditStatusDel(string cardNo, decimal amount, string extraText, string token, string docNr, bool status); 


public static event CashCreditStatusDel SwitchOperationStatus; 

私はSellControl.dllを参照してそれを実行するために、別のクラスの中にそのイベントが必要です。私は試験機の上に置いたとき、私のPCでEeverythingは我々の検査官が使用するけれども完璧、正常に動作します - それはエラーをドロップ

[午前8時42分46秒] FATAL(カーネル):内部例外:System.TypeLoadException: 'SellControls.CashCreditStatusDel'をアセンブリから読み込めませんでした 'SellControl、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = null'。 Plugins.CardCreditOperation.Displayで ()

だから、私はこの行を削除した場合、私は、SellControl内のメソッドに私の方法InvokeDataを購読方法

SellControl.SwitchOperationStatus += InvokeData; 

)(表示するエラーを追跡 - コードクラッシュすることはありませんが、私はイベントに登録しません。

私は何とかテストマシンには、旧バージョンのSellControl.dllを持っているGACがあり、それを私の代わりに使用しています。私は今の2時間のようにそれと苦労しています。

+0

アセンブリには厳密な名前が付けられていないため、GACに組み込むことはできません。あなたはアセンブリがアプリケーションのどこかにロードできると確信していますか?それはどのアプリケーションですか、デスクトップ、ウェブですか?あなたはFusionを有効にしようとしましたか?アセンブリへのプロジェクト参照がありますか、またはDLLを手動でコピーしていますか?後者の場合は、アセンブリが最新で、アプリケーションの実行可能ファイルの隣にあることを確認してください。 – Luaan

+0

テストマシンでコードを再コンパイルしていますか?実行可能ファイルを単純にコピーするには、ビルドとテストのマシン上でネットライブラリのバージョンを正確に同じにする必要があります。ネットライブラリはWindows DLLを使用し、Windows DLLのバージョンはおそらく異なります。この修正は、市販の購入ソフトウェアのようなインストールパッケージを生成するビルドメニューの公開オプションを使用することです。公開すると、ルートフォルダ内のsetup.exeでフォルダが作成されます。あなたはテストマシン上のDLLを更新する商用ソフトウェアのようなsetup.exeをインストールするか、テストマシン上でソフトウェアを再コンパイルする必要があります。 – jdweng

+0

これは3.5 .NET上のWPFアプリケーションです。自分のマシンですべてをコンパイルし、過去のプログラマー.batを使ってReleaseフォルダから "Code-Structured folders"にすべて移動します。今まではすべてがうまくいった。 – Wkjjjj

答えて

0

私は自分のアセンブリとプロパティに行って、ファイルバージョンを追加してアセンブリバージョンを作成し、実際に同じDLLを持っているかどうかを確認するためにコメントに日付を書きました。それをやった後、私は再建しました。

何とか働いた。

関連する問題