2009-07-01 28 views
4

我有一個我爲自定義文件類型構建的語言服務。如何將自定義默認生成操作與Visual Studio中的自定義文件類型關聯?

此外,我在我的MSBuild項目文件中創建了一個自定義目標(構建動作)。然而,我無法找到任何方法將默認的構建操作關聯到我的自定義文件擴展名。

例如,如果添加.cs文件,則生成操作默認爲「編譯」。我想爲我做同樣的事情。 即添加.dsl文件時我希望生成操作爲「生成」,這是我的自定義目標(因此爲生成操作)。

有沒有方法沒有使用項目嚮導?

回答

6

我認爲以下可能會幫助你和其他人想要做類似的事情。

如果你的最終目標是什麼時,你.dsl文件更改生成代碼/東西,那麼我建議你可以使用「CustomTool」。這是任何項目項目的財產。您編寫代碼以生成代碼,註冊Generator程序集,然後將.dsl文件的customtool屬性設置爲「MyDslToCsGenerator」。

爲了登記在VS的自定義工具,你必須運行「regasm」實用工具,可提供對MyDslToCsGenerator.dll


我知道你說你不想Net框架使用項模板嚮導,但如果你已經訪問自定義文件模板,那麼你可以設置默認生成操作(見下面的第一個鏈接)

<ProjectItem SubType="" TargetFileName="$fileinputname$.dsl" 
ReplaceParameters="true" ItemType="Embedded Resource" 
CustomTool="MyDslToCsGenerator">MyFile.dsl</ProjectItem> 

你也可以做到這一點PROGRAMM atically與DTE(projectItem.Properties.Item("ItemType").Value = "MyOwnBuildActionChoice"),如下

幫助鏈接在第二連桿解釋說:

  1. How to set the Build Action for an item created by a Visual Studio item template?
  2. Using DTE to set a custom build action
+0

Vin時,你把第一個鏈接正是我一直在尋找。不知道我在搜索過程中錯過了它。 非常感謝! – 2009-07-03 02:24:37

0

不確定關於「生成」,我猜是你的'自定義生成操作' - 但是,我可以在構建任務中使用生成引擎API以編程方式設置任何必需的生成操作。

所以我們可以說,文件是建立操作設置爲「編譯」,你可以很容易地將其更改爲任何你運行時(建立時間)期間喜歡 - 在我的情況下,我將其設置爲「嵌入的資源」。這可以通過關聯自定義目標文件來實現,該文件運行您可以編寫的構建任務代碼。

讓我知道,如果它是不明確的,我可以進一步解釋,如果你有興趣。

+0

嗨Vin時, 我有一個自定義的目標,我可以手動將構建任務設置爲該目標(這是構建操作)。這只是當我添加一個新的.dsl文件,我想它是能構建行動的文件自動關聯。 – 2009-07-01 15:32:01

相關問題