我正在嘗試編寫一個PowerShell腳本來調用位於我的Visual Studio(2010)解決方案中的方法。 調用的語法是什麼,例如,類似於如下方法:使用PowerShell調用Visual Studio方法
public void CreateData(string s, int i)
?
我正在嘗試編寫一個PowerShell腳本來調用位於我的Visual Studio(2010)解決方案中的方法。 調用的語法是什麼,例如,類似於如下方法:使用PowerShell調用Visual Studio方法
public void CreateData(string s, int i)
?
你需要建立你的C#類,並使用類似InvokeCSharp調用CreateData方法
請參閱鏈接,一個很好的例子http://vincenth.net/blog/archive/2009/10/27/call-inline-c-from-powershell-with-invokecsharp.aspx
我將創建一個這樣的程序:
class Program
{
static void Main(string[] args)
{
if(args.Length > 1)
CreateData(args[0], int.Parse(args[1]));
}
public static void CreateData(string s, int i)
{
File.WriteAllText(@"C:\data.txt",
string.Format("This is some data: s = {0} i = {1}", s, i));
}
}
,然後程序進行編譯後,我有可執行「ConsoleApp.exe」
我啓動了如下因素戰俘ershell腳本:
& "Path_Of_The_Program\ConsoleApp.exe" "MyText" 100
它成功地將數據寫入我的文件。
你可以將你的類庫項目編譯成一個dll,然後在powershell中使用反射來加載dll。這裏有一個例子:
C#代碼:
public class MyClass {
public void CreateData(string s, int i) {
// your logic here
}
}
PowerShell代碼:
$lib = [Reflection.Assembly]::LoadFile("C:\path\to\MyClass.dll")
$obj = new-object MyClass
$result = $obj.CreateData("s_value",5)
此代碼假定您的類被稱爲 「MyClass的」。您可能必須先在PowerShell中運行set-executionpolicy RemoteSigned。
如果您想指定一個相對於DLL – ashes999 2013-05-23 17:44:51
感謝您的回覆。我可以使用你給我的語法打開我的課程,但我無法獲得所需的具體方法。我試圖像myclass.cs/CreateData,但這不起作用。有任何想法嗎? – Skitterm 2012-07-19 23:04:57
您需要先編譯您的類,然後使用.exe文件路徑啓動該命令。您可以使用csc命令行實用程序構建您的類(http://msdn.microsoft.com/en-us/library/78f4aasd.aspx) – alexandrekow 2012-07-20 09:18:15