2012-04-20 61 views
1

我创建了一个.NET库,我想创建一个GUI,通过PowerShell调用库。为了调用cmdlet,我必须将an entry添加到Windows注册表中,因为该库是针对.NET 4编译的。托管的PowerShell运行.NET 4管理单元

它工作正常,但不适用于GUI中的PowerShell主机。我可以做些什么来设置PowerShell主机来运行CLR 4管理单元?

var rsConfig = RunspaceConfiguration.Create(); 
var myAssembly = new AssemblyConfigurationEntry("AssemblyName", "C:\...\Assembly.dll"); 
rsConfig.Assemblies.Append(myAssembly); 
var runSpace = RunspaceFactory.CreateRunspace(rsConfig); 
runSpace.Open(); 

using (var ps = PowerShell.Create()) { 
    ps.Runspace = runSpace; 
    ps.AddCommand("Get-MyCmdlet"); 
    ps.AddParameter("Param1"); 
    ps.AddParameter("Param2"); 
    foreach (var result in ps.Invoke()) { // CommandNotFoundException 
     Debug.WriteLine(result.ToString()); 
    } 
} 

回答

1

问题解决了。这有点复杂。我写了关于它的an article。基本上追加装配是一种错误的方法。更简单的方法是注册该程序集。

+0

您应该将其标记为已接受。 – JasonMArcher 2012-05-03 18:29:07