繁体   English   中英

如何将自定义默认构建操作与Visual Studio中的自定义文件类型相关联?

[英]How do I associate a custom default build action to a custom file type in Visual Studio?

我有一个我为自定义文件类型构建的语言服务。

另外,我在MSBuild项目文件中创建了一个自定义目标(构建操作)。 但是,我无法找到任何方法将默认情况下的构建操作关联到我的自定义文件扩展名。

例如,如果添加.cs文件,则构建操作默认为“compile”。 我想为我做同样的事情。 即在添加.dsl文件时,我希望构建操作为“Generate”,这是我的自定义目标(因此构建操作)。

有没有使用项目向导的方法?

我认为以下内容可能会帮助您和其他想要做类似事情的人。

如果您的最终目标是在.dsl文件中发生任何更改时生成代码/某些内容,那么我建议您使用“CustomTool”。 它是任何项目项目的属性。 您编写代码来生成代码,注册Generator程序集,然后将.dsl文件的customtool属性设置为“MyDslToCsGenerator”。

要在VS中注册自定义工具,您必须运行“regasm”实用程序,针对MyDslToCsGenerator.dll提供.Net框架


我知道您说您不想使用项目模板向导,但如果您可以访问自定义文件模板,那么您可以设置默认构建操作(请参阅下面的第1个链接)

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

您也可以使用DTE( projectItem.Properties.Item("ItemType").Value = "MyOwnBuildActionChoice"以编程方式执行此操作projectItem.Properties.Item("ItemType").Value = "MyOwnBuildActionChoice" ),如下面的第2个链接所述

有用的网址:

  1. 如何为Visual Studio项目模板创建的项目设置构建操作?
  2. 使用DTE设置自定义构建操作

不确定“生成”,我猜是你的“自定义构建操作” - 但是,我已经能够在构建任务中使用构建引擎API以编程方式设置任何所需的构建操作。

因此,假设文件的构建操作设置为“编译”,您可以在运行时(构建时)将其轻松更改为您喜欢的任何内容 - 在我的情况下,我将其设置为“嵌入式资源”。 这可以通过关联自定义目标文件来实现,该文件运行您可以编写的构建任务代码。

如果不清楚,请告诉我,如果您有兴趣,我可以进一步解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM