Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何将自定义默认生成操作与Visual Studio中的自定义文件类型相关联?_.net_Visual Studio_Msbuild_File Type - Fatal编程技术网

.net 如何将自定义默认生成操作与Visual Studio中的自定义文件类型相关联?

.net 如何将自定义默认生成操作与Visual Studio中的自定义文件类型相关联?,.net,visual-studio,msbuild,file-type,.net,Visual Studio,Msbuild,File Type,我有一个为自定义文件类型构建的语言服务 此外,我还在MSBuild项目文件中创建了自定义目标(生成操作)。但是,我找不到任何方法将该生成操作默认与我的自定义文件扩展名相关联 例如,如果添加一个.cs文件,构建操作默认为“编译”。我也愿意为我的孩子做同样的事。 i、 当添加一个.dsl文件时,我希望构建操作是“生成”,这是我的自定义目标(因此也是构建操作) 有没有不使用项目向导的方法 不确定“生成”,我想这是您的“自定义生成操作”-但是,我已经能够在生成任务中使用生成引擎API以编程方式设置任何必

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

此外,我还在MSBuild项目文件中创建了自定义目标(生成操作)。但是,我找不到任何方法将该生成操作默认与我的自定义文件扩展名相关联

例如,如果添加一个.cs文件,构建操作默认为“编译”。我也愿意为我的孩子做同样的事。 i、 当添加一个.dsl文件时,我希望构建操作是“生成”,这是我的自定义目标(因此也是构建操作)

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

不确定“生成”,我想这是您的“自定义生成操作”-但是,我已经能够在生成任务中使用生成引擎API以编程方式设置任何必需的生成操作

因此,假设文件的构建操作设置为“compile”,您可以在运行时(构建时)轻松地将其更改为您喜欢的任何内容—在我的示例中,我将其设置为“Embedded Resource”。这可以通过关联一个自定义目标文件来实现,该文件运行您可以编写的生成任务代码


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

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

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

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


我知道您说过不想使用项目模板向导,但如果您有权访问自定义文件模板,则可以设置默认生成操作(请参阅下面的第一个链接)

MyFile.dsl

您还可以使用DTE(
projectItem.Properties.Item(“ItemType”).Value=“MyOwnBuildActionChoice”
)以编程方式执行此操作,如下面第二个链接中所述

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


  • 嗨,Vin,我有一个自定义目标,我可以手动将构建任务设置为该目标(即构建操作)。就在我添加一个新的.dsl文件时,我希望它能自动将构建操作与该文件关联起来。Vin,您设置的第一个链接正是我想要的。不知道我怎么会在搜索过程中错过它。非常感谢!