2009-07-01 29 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

相关问题