Custom built files | CodeGuru

Custom built files

One really annoying thing about DevStudio is that it doesn’t let you add a new file type with special build settings, and have those settings apply to every file of that type that you add. (Well, there is always the “Hack the Registry!!!” solution…) These are just a couple of macros I slapped together to […]

Written By
CodeGuru Staff
CodeGuru Staff
Nov 29, 1998
2 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

One really annoying thing about DevStudio is that it doesn’t let you add a new file type with special
build settings, and have those settings apply to every file of that type that you add. (Well,
there is always the “Hack the Registry!!!” solution…) These are just a couple of macros I slapped
together to make that (a little) easier. I designed these originally to add assembly files to your
project, using NASM (a cool little freeware assembler [that creates Win32 objs!] available
here) but they can be very easily hacked to work with
any file type and build command line imaginable. (A little more hacking would be required for a
multi-line build command.) The first macro adds a new assembly file, the second one adds an
assembly file you’ve already written. Just change your path to the executable file in the “NASMPath”
variable, and the command line in “NASMSwitches”. It’ll ask you for the filename in both cases; the
first one creates a file with that name, the second will just add that file to your project.
Unfortunately, no file dialog is available, or else you could just browse to it. Instead, you need to
enter the full path to the ASM file. I haven’t tested it with only a filename, so I’m not sure what
directory DevStudio will use by default. The first macro even increments the filename each time you
create a new one, and adds the file to the project’s current directory.

Option Explicit
‘
‘ This is the path to nasmw.exe
‘
Public Const NASMPath = “C:nasmnasmw.exe”
Public Const NASMSwitches = ” -f win32 “”$(InputPath)”” -o “”$(ProjDir)$(IntDir)” + _
	“$(InputName).obj”””
‘
‘ The total number of ASM files created so far
‘
Private ASMFilesCreated
ASMFilesCreated = 1
Sub AddNewAssemblyFile()
‘Description: Add a new Assembly File to your project
	Dim TempConfiguration
	Dim TempDocument
	Dim TempFilename
	Dim TempBackSlashPosition
	Dim CurrentProject
	Dim FileSystem
	Set CurrentProject = Application.ActiveProject
	TempFilename = “Asm” + CStr(ASMFilesCreated) + “.asm”
	If CurrentProject.Type <> “Build” Then
		MsgBox “This project is not a build project.”
	Else
		ASMFilesCreated = ASMFilesCreated + 1
		TempFilename = InputBox(“Enter the filename:”, “Add ASM File”, _
			TempFilename)
		If TempFileName = “” Then Exit Sub
		TempBackSlashPosition = InStrRev(CurrentProject.FullName, “”)
		TempFilename = Left(CurrentProject.FullName, TempBackSlashPosition) + TempFilename
		Application.Documents.Add “Text”
		Application.ActiveDocument.Save(TempFilename)
		CurrentProject.AddFile TempFileName
		For Each TempConfiguration In CurrentProject.Configurations
			TempConfiguration.AddCustomBuildStepToFile TempFilename, NASMPath + _
				NASMSwitches, “$(ProjDir)$(IntDir)$(InputName).obj”, _
				“Assembling $(InputName).asm…”
		Next
	End If
End Sub
Sub AddExistingAssemblyFile()
‘Description: Add an existing Assembly File to your project
	Dim TempConfiguration
	Dim TempDocument
	Dim TempFilename
	Dim TempBackSlashPosition
	Dim CurrentProject
	Dim FileSystem
	Set CurrentProject = Application.ActiveProject
	TempFilename = “Asm” + CStr(ASMFilesCreated) + “.asm”
	If CurrentProject.Type <> “Build” Then
		MsgBox “This project is not a build project.”
	Else
		ASMFilesCreated = ASMFilesCreated + 1
		TempFilename = InputBox(“Enter the filename:”, “Add ASM File”, TempFilename)
		If TempFileName = “” Then Exit Sub
		CurrentProject.AddFile TempFileName
		For Each TempConfiguration In CurrentProject.Configurations
			TempConfiguration.AddCustomBuildStepToFile TempFilename, NASMPath + _
				NASMSwitches, “Assembling $(InputName).asm…”
		Next
	End If
End Sub
CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.