2013-04-17 20 views
1

我有一個自定義的腳本語言和一個編譯器(用C語言編寫的一個EXE),將該語言轉換爲C#代碼。我想將腳本編譯器作爲自定義工具連接到解決方案中的腳本文件,並讓它生成後面的C#代碼。爲自定義工具打包.exe的便宜方法?

我見過articles and tutorials online,他們都生成了COM接口,並在註冊表和GAC中註冊了自定義DLL,我真的不想處理所有這些。

是否有包裝或黑客或第三方插件的地方,會使這更容易?就像是有一種方法可以將批處理腳本作爲自定義工具運行一樣,並且可以通過標準輸出生成代碼隱藏文件,我可以將文件從我的編譯器傳輸到標準輸出。

回答

1

首先,我知道你說你不想通過MSFT註冊方式,但我建議你重新考慮。詳情請看這裏:http://msdn.microsoft.com/en-us/library/vstudio/bb166527.aspx

現在,我們得到了這一點的方式,我給你的建議:

  1. 把你的exe文件在一個固定位置(最佳位置可能是正確的解決方案中的根或存儲庫)。接下來,手動運行一次你的工具,這樣你就可以得到.cs文件或者你生成的任何東西,這樣你就可以將它們添加到你的解決方案中。這樣C#編譯器就知道他們在那裏,你只需要點擊構建按鈕,它就會生成文件。接下來,創建一個預生成事件(在項目屬性下,構建事件選項卡),該事件使用相應的命令行參數調用您的exe文件,以使其執行其任務(生成新的cs文件)。我建議你編輯你的exe文件,一次獲取多個文件,使你的預生成命令更簡單。 (這是將你的文件放在sln或repo目錄中的地方,這很有幫助,因爲你可以使用VS宏來獲取你的exe文件和讀入文件的絕對路徑。)

  2. 現在發生什麼, msbuild被調用(但是在你點擊構建之後)你的腳本(或exe)將運行以生成新的輸出文件。由於msbuild尚未啓動,您可以將任何解決方案文件更改爲您的內容,並且這些更改將由msbuild和最終(可能一旦構建完成)VS.

注: 我從來沒有能夠得到一個構建事件的第一次嘗試工作,它通常會拋出一個錯誤,將在VS錯誤/警告窗口顯示出來。我通常將整個錯誤複製到記事本(或scite)中,然後使用參數將其編輯到實際的命令行中。然後我打開一個命令shell並嘗試執行它。這裏的錯誤通常更有幫助,你可以調整,直到你得到正確的結果並將更改複製回VS.

+0

謝謝,我現在實際上正在使用prebuild事件。它可以正常工作,但它有時會在構建過程中進行兩次修改才能生效(這對我來說沒有任何意義,但無論如何),它絕不像定製工具那樣光滑。 –

+0

@JayLemmon絕對不是,但你確實指定了「黑客」作爲選項 –

+0

是的,這是一個很好的停止差距措施。 –