【问题标题】:Can I run code from a .NET assembly from a command line?我可以从命令行运行 .NET 程序集的代码吗?
【发布时间】:2015-11-09 18:04:35
【问题描述】:

我有一个 .NET 类库(作为 .dll 文件),该库包含一个具有静态方法的类。有没有办法从命令行调用该方法?

【问题讨论】:

  • 你的意思是要使用命令行中的静态函数作为命令
  • @Devjosh:是的,我想创建一个包含magicallyCall MyAssembly.MyClass.DoStuff() 或类似内容的 .cmd 文件。

标签: c# .net command-line assemblies


【解决方案1】:

Here 是关于如何从 Powershell 加载 dll 并在其中调用方法的指南。

这篇文章最重要的部分是这些命令:

[C:\temp]
PS:25 > notepad MyMathLib.cs

(…)

[C:\temp]
PS:26 > csc /target:library MyMathLib.cs
Microsoft (R) Visual C# 2005 Compiler version 8.00.50727.42
for Microsoft (R) Windows (R) 2005 Framework version 2.0.50727
Copyright (C) Microsoft Corporation 2001-2005. All rights reserved.


[C:\temp]
PS:27 > [Reflection.Assembly]::LoadFile(“c:\temp\MyMathLib.dll”)

GAC    Version        Location
—    ——-        ——–
False  v2.0.50727     c:\temp\MyMathLib.dll



[C:\temp]
PS:28 > [MyMathLib.Methods]::Sum(10, 2)
12

[C:\temp]
PS:29 > $mathInstance = new-object MyMathLib.Methods
Suggestion: An alias for New-Object is new

[C:\temp]
PS:30 > $mathInstance.Product(10, 2)
20

【讨论】:

  • 链接查找比我的好得多。 =)
【解决方案2】:

看看这里,也许?

http://blog.usepowershell.com/2009/03/exploring-the-net-framework-with-powershell-static-members-part-4/

您可以使用

加载自己的程序集
[Reflection.Assembly]::LoadFile(“c:\mysource\mylib.dll”)

如果您不能或不愿意使用 Powershell,则需要使用控制台应用程序对静态方法的调用进行包装,如 davecoulter's answer 中所述

【讨论】:

    【解决方案3】:

    是的——但你必须有一个带有Main() 方法的程序,该方法引用该.dll 并可以调用它——比如在控制台应用程序中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多