2012-07-19 66 views
0

我正在嘗試編寫一個PowerShell腳本來調用位於我的Visual Studio(2010)解決方案中的方法。 調用的語法是什麼,例如,類似於如下方法:使用PowerShell調用Visual Studio方法

public void CreateData(string s, int i) 

回答

0

我將創建一個這樣的程序:

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 

它成功地將數據寫入我的文件。

+0

感謝您的回覆。我可以使用你給我的語法打開我的課程,但我無法獲得所需的具體方法。我試圖像myclass.cs/CreateData,但這不起作用。有任何想法嗎? – Skitterm 2012-07-19 23:04:57

+0

您需要先編譯您的類,然後使用.exe文件路徑啓動該命令。您可以使用csc命令行實用程序構建您的類(http://msdn.microsoft.com/en-us/library/78f4aasd.aspx) – alexandrekow 2012-07-20 09:18:15

5

你可以將你的類庫項目編譯成一個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。

+0

如果您想指定一個相對於DLL – ashes999 2013-05-23 17:44:51

相關問題