I have a language service that I have built for a custom file type.
In addition, I have created a custom target (build action) within my MSBuild project files. I am however unable to find any way to associate that build action by default to my custom file extension.
For example, if you add a .cs file, the build action defaults to "compile". I would like to do the same for mine. i.e. when adding a .dsl file I would like the build action to be "Generate", which is my custom target (and therefore build action).
Is there a way without using a item wizard?
To set the build action for a file, open the file's properties in the Properties window by selecting the file in Solution Explorer and pressing Alt+Enter. Or, right-click on the file in Solution Explorer and choose Properties.
Right-click the XAFML file in the Solution Explorer and select “Properties”. Set the Build Action property to “Embedded resource”.
Open the project's Property Pages dialog box. For more information, see Set C++ compiler and build properties in Visual Studio. Choose Configuration Properties to enable the Configuration box. In the Configuration box, select the configuration for which you want to specify a custom build tool.
To change the build action assigned to a file, click the file in the build list, and then click Change Build Action to open the Change Build Action dialog box. From the Build Action drop-down list, select the build action that you want to assign to this file.
I think the following might help you and others who are wanting to do similar things.
If your end goal is to generate code/something when anything changes in your .dsl file, then I suggest you could use "CustomTool". It's a property on any Project Item. You write code to generate code, register the Generator assembly, then set the customtool property of the .dsl file to "MyDslToCsGenerator".
In order to register the Custom tool in VS you have to run "regasm" utility, available with .Net framework against the MyDslToCsGenerator.dll
I know you said that you don't want to use Item Template wizard, but if you've access to the custom file template, then you could set the default build action (see 1st link below)
<ProjectItem SubType="" TargetFileName="$fileinputname$.dsl"
ReplaceParameters="true" ItemType="Embedded Resource"
CustomTool="MyDslToCsGenerator">MyFile.dsl</ProjectItem>
You could also do this programmatically with DTE (projectItem.Properties.Item("ItemType").Value = "MyOwnBuildActionChoice"
) as explained in the 2nd link below
Helpful links:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With