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

新对象:找不到类型 [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 回答