3

PowerShell は初めてです。カスタム C# dll のメソッドを呼び出そうとしています。複数の理由で失敗しました。

これが私のコードです:

[System.Reflection.assembly]::LoadFile("E:\Mulukutla\Migration.dll")

$MyClass = New-Object DataMigration

$MyClass.MigrateData("$from\$name","$to\$name")

私が使用した C# クラス ライブラリは、4.0 および powershell v2.0 でビルドされています。

"1" 個の引数を指定して "LoadFile" を呼び出す例外: "このアセンブリは、現在読み込まれているランタイムよりも新しいランタイムによってビルドされているため、読み込むことができません。(HRESULT からの例外: 0x8013101B)" E:\Mulukutla\myCodev1.ps1 で:3 char:39 + [System.Reflection.assembly]::LoadFile <<<< ("E:\Mulukutla\Migration.dll") + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException

New-Object : タイプ [DataMigration] が見つかりません: このタイプを含むアセンブリが読み込まれていることを確認してください。E:\mulukutla\myCodev1.ps1:4 char:21 + $MyClass= New-Object <<<< DataMigration + CategoryInfo : InvalidType: (:) [New-Object], PSArgumentException

+ FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand

訂正して助けてください、私がしている間違いは何ですか?

4

1 に答える 1

2

次の方法で cmd から PowerShell を呼び出します。

set COMPLUS_Version=v4.0.30319
powershell

または、「C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe.config」の内容を次のように設定します (存在しない場合は、このファイルを作成する必要がある場合があります)。

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
        <supportedRuntime version="v4.0" />    
    </startup> 
</configuration>
于 2012-11-12T04:26:18.743 に答える