我能够在Powershell v2.0脚本中运行C#代码示例,如下所示:
$Source = @"
using System;
namespace CSharpInPowershell
{
public static class Sample
{
public static void TryDataTable()
{
Console.WriteLine("Hello World");
Console.ReadLine();
}
}
}
"@
Add-Type -TypeDefinition $Source -Language CSharp
[CSharpInPowershell.Sample]::TryDataTable()
但是,我在尝试添加数据表时遇到错误:
Add-Type -AssemblyName System.Data
$Source = @"
using System;
using System.Data;
namespace CSharpInPowershell
{
public static class Sample
{
public static void TryDataTable()
{
Console.WriteLine("Hello World");
DataTable table = new DataTable();
Console.ReadLine();
}
}
}
"@
Add-Type -TypeDefinition $Source -Language CSharp
[CSharpInPowershell.Sample]::TryDataTable()
我得到的错误如下:
Add-Type:c:\ Users(userid)\ AppData \ Local \ Temp \ qbefurwr.0.cs(2):The 类型或命名空间名称“数据”在命名空间“系统”中不存在 (你错过了一个程序集引用吗?) c:\ Users(userid)\ AppData \ Local \ Temp \ qbefurwr.0.cs(1):using System; c:\ Users(userid)\ AppData \ Local \ Temp \ qbefurwr.0.cs(2):>>>运用 System.Data; c:\ Users(userid)\ AppData \ Local \ Temp \ qbefurwr.0.cs(3): namespace CSharpInPowershell在行:1 char:9 + Add-Type<<<< -TypeDefinition $ Source -Language CSharp + CategoryInfo:InvalidData:(c:\ Users(userid)... bly reference?):CompilerError)[Add-Type],Exception + FullyQualifiedErrorId:SOURCE_CODE_ERROR,Microsoft.PowerShell.Commands.AddTypeCommand
Add-Type:无法添加类型。有编译错误。在线:1 焦炭:9 + Add-Type<<<< -TypeDefinition $ Source -Language CSharp + CategoryInfo:InvalidData:(:) [Add-Type],InvalidOperationException + FullyQualifiedErrorId:COMPILER_ERRORS,Microsoft.PowerShell.Commands.AddTypeCommand
正如您所看到的,我尝试使用Add-Type -AssemblyName System.Data
添加引用。我的目标是能够在Powershell脚本中使用C#代码示例。我知道我可以在Powershell中重写这一切,但我正试图让这种类型的脚本工作。
如何获取C#代码中识别的System.Data
的程序集引用?
更新:感谢@SomeShinyObject,我有以下工作脚本:
$Source = @"
using System;
using System.Data;
namespace CSharpInPowershell
{
public static class Sample
{
public static void TryDataTable()
{
Console.WriteLine("Hello World");
DataTable table = new DataTable();
Console.ReadLine();
}
}
}
"@
Add-Type -TypeDefinition $Source -Language CSharp `
-ReferencedAssemblies System.Data, System.XML
[CSharpInPowershell.Sample]::TryDataTable()
答案 0 :(得分:2)
您需要使用ReferencedAssemblies
参数。
#When I tested, System.XML also needed to be added for it to work so I included it
Add-Type -TypeDefinition $Source -Language CSharpVersion3 -ReferencedAssemblies System.Data, System.XML