【问题标题】:How to create C# string object inside .ps1 file [closed]如何在 .ps1 文件中创建 C# 字符串对象 [关闭]
【发布时间】:2017-12-08 00:47:40
【问题描述】:

以下 C# sn-p 嵌入在 powershell (.ps1) 文件中并生成 System.Management.Automation.RuntimeException。删除“string s”,异常就消失了。尝试使用大写“String”并尝试添加命名空间“System.String”和其他各种方法,但仍然出现异常。这让我发疯了,请帮助我理解为什么会这样。

$code = @"
public static class foo
{
  public static bool check()
  {
    string s;
    return false;
  }
}

代码是这样调用的;

try
{
  Add-Type -TypeDefinition $code -Language CSharp
}
catch{} // ignore TYPE_ALREADY_EXISTS exception
$res = [foo]::check();

这里是异常详情;

Exception: System.Management.Automation.RuntimeException: unable to find type [foo].
TargetObject: foo
CategoryInfo: InvalidOperation (foo:Typename) [], RuntimeException
FullyQualifiedErrorId: TypeNotFound
InvocationInfo: System.Management.Automation.InvocationInfo

【问题讨论】:

  • 请发布足够的代码,以便我们至少可以重现该问题。定义字符串值$code 显然不会自己编译你的类

标签: c# powershell powershell-4.0


【解决方案1】:
$code = @"
public static class foo {
  public static bool check() {
    string s;
    return false;
  }
}
"@

Add-Type -TypeDefinition $code -Language CSharp

生产

警告为错误:变量“s”已声明但从未使用

它不允许你声明未使用的变量。

【讨论】:

  • 有一个简单的解决方案,但我们不知道 OP 到底在做什么
  • 是的,我知道。这就是为什么我保持原样。评论太长了。
  • 您的回答帮助我了解了如何在 powershell 的上下文中更好地开发 C# 代码。谢谢。
猜你喜欢
  • 2014-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 2013-11-10
  • 2012-07-08
  • 2014-04-12
相关资源
最近更新 更多