从powershell脚本调用自定义C#dll的方法

时间:2012-11-12 02:32:16

标签: powershell

我是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

异常调用" LoadFile"用" 1"参数:"此程序集由比当前加载的运行时更新的运行时构建,无法加载。 (HRESULT异常:0x8013101B)" 在E:\ Mulukutla \ myCodev1.ps1:3 char:39 + [System.Reflection.assembly] :: LoadFile<<<< (" E:\ Mulukutla \ Migration.dll&#34)     + CategoryInfo:NotSpecified:(:) [],MethodInvocationException     + FullyQualifiedErrorId:DotNetMethodException

New-Object:找不到类型[DataMigration]:确保加载了包含此类型的程序集。 在E:\ mulukutla \ myCodev1.ps1:4 char:21 + $ MyClass = New-Object<<<<数据迁移     + CategoryInfo:InvalidType :( :) [New-Object],PSArgumentException

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

请帮我纠正,我在做什么错误?

1 个答案:

答案 0 :(得分: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>