不要在powershell中加载组件
本文关键字:加载 组件 powershell | 更新日期: 2023-09-27 18:01:18
我尝试在powershell中执行c#。我写了剧本,但行不通。此脚本包含c#中的hello简单类进行测试。将来我需要使用XML。这就是我添加System.XML的原因。
Source = @"
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
namespace ConverterTRX
{
public class PS
{
public static string Convert()
{
XmlSerializer xmlSer = new XmlSerializer(typeof(string));
return "Convert1";
}
public static string Convert1(string path)
{
return "Convert2="+path+"/123";
}
}
}
"@
if (-not ([System.Management.Automation.PSTypeName]'PS').Type)
{
Add-Type -AssemblyName Microsoft.CSharp
Add-Type -AssemblyName System
Add-Type -AssemblyName System.Core
Add-Type -AssemblyName System.Data
Add-Type -AssemblyName System.Data.DataSetExtensions
Add-Type -AssemblyName System.Xml
Add-Type -AssemblyName System.Xml.Linq
Add-Type -TypeDefinition $Source -Language CSharp
}
"Call function"
[ConverterTRX.PS]::Convert()
这个脚本抛出异常:
Add-Type : *'Temp'zktiv5n4.0.cs(3) : The type or namespace name 'Xml' does not exist in the namespace 'System' (are you missing an assembly reference?) *'Temp'zktiv5n4.0.cs(2) : using System.IO; *'Temp'zktiv5n4.0.cs(3) : >>> using System.Xml; *'Temp'zktiv5n4.0.cs(4) : using System.Xml.Serialization;
那么,它是如何修复的呢?
您需要将-ReferencedAssemblies
参数添加到Add-Type
cmdlet调用中,否则您将无法获得名称空间
$referencingassemblies = ("C:'Windows'Microsoft.NET'Framework'v4.0.30319'System.XML.dll")
Add-Type -TypeDefinition $Source -ReferencedAssemblies $referencingassemblies -Language CSharp