4

Visual Studio の Windows フォーム アプリケーションで AForge クラスを使用しても問題はありません。現在、それらを Windows PowerShell で使用しようとしています。

[Reflection.Assembly]::LoadFile('C:\Program Files\AForge.NET\IPLab\References\AForge.NET\AForge.Imaging.dll')

与えます:

GAC    Version        Location
---    -------        --------
False  v2.0.50727     C:\Program Files\AForge.NET\IPLab\References\AForge.NET\AForge.Imaging.dll

AForge.Imaging.dll ファイル バージョンと製品バージョンは両方とも 2.2.4.0 ですが、v2.0.50727 と表示されます。しかし、以下を実行して AForge.Imaging.UnmanagedImage オブジェクト $umi ($bmdata は Drawing.BitMapData オブジェクト) をインスタンス化するのに問題はありません。

$umi = new-object Aforge.Imaging.UnmanagedImage $bmdata

しかし、$umi.GetType() などの $umi オブジェクトにアクセスしようとすると、次のエラーが発生します。

The following exception occurred while retrieving member "GetType": "Could not load file or assembly 'AForge, Version=2.2.4.0, Culture=neutral, PublicKeyToken=c1db6ff4eaa06aeb' or one of its dependencies. The system cannot find the file specified."
At line:1 char:13
+ $umi.GetType <<<< ()
    + CategoryInfo          : NotSpecified: (:) [], ExtendedTypeSystemException
    + FullyQualifiedErrorId : CatchFromBaseGetMember

何が間違っている可能性がありますか?ありがとう。

4

3 に答える 3

3

「AForge.Imaging.dll」ライブラリは、ロードする必要のある次のライブラリに依存しています。

Add-Type -AssemblyName "System.Drawing"
Add-Type -Path "E:\AForge.dll"
Add-Type -Path "E:\AForge.Math.dll"
Add-Type -Path "E:\AForge.Imaging.dll"

次のPowerShellコマンドを実行して、現在ロードされているアセンブリを一覧表示し、必要なビットがあることを確認します。

[appdomain]::currentdomain.getassemblies() | sort -property fullname | format-table fullname

これが私の結果です:

FullName
--------
AForge, Version=2.2.4.0, Culture=neutral, PublicKeyToken=c1db6ff4eaa06aeb
AForge.Imaging, Version=2.2.4.0, Culture=neutral, PublicKeyToken=ba8ddea9676ca48b
AForge.Math, Version=2.2.4.0, Culture=neutral, PublicKeyToken=abba2e25397ee8c9
Microsoft.PowerShell.Commands.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Microsoft.PowerShell.Commands.Management, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Microsoft.PowerShell.Commands.Utility, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Microsoft.PowerShell.ConsoleHost, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Microsoft.PowerShell.Security, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Microsoft.WSMan.Management, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Configuration.Install, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
System.Management, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
System.Management.Automation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

これがうまくいったことを確認できます。

于 2012-08-30T13:41:43.113 に答える
0

実行Process Monitorして、探しているアセンブリと場所を確認します。AForge.NET に必要なアセンブリの 1 つが見つからないか、セキュリティ上の制限がある可能性があります。32 ビット バージョンの DLL を 64 ビット PowerShell にロードしようとしている場合、またはその逆の場合に、同様の問題が発生することがあります。

于 2012-08-21T06:42:03.147 に答える
0

関数を呼び出しているプロジェクトに aforge.video をインストールします。以下は、nuget コンソールの構文です。 Install-Package AForge.Video -Project "ProjectNameFromWhichAforgeFunctionCalls" -Version 2.2.4.0

これは私の問題を解決しました

于 2015-02-04T08:06:34.600 に答える