Commits

Jason Perkins  committed 2c1caf3

Removed deprecated Visual Studio actions

  • Participants
  • Parent commits 52cfef7

Comments (0)

Files changed (14)

File src/_manifest.lua

 		
 		-- Visual Studio actions
 		"actions/vstudio/_vstudio.lua",
-		"actions/vstudio/vs2002_solution.lua",
-		"actions/vstudio/vs2002_csproj.lua",
-		"actions/vstudio/vs2002_csproj_user.lua",
 		"actions/vstudio/vs200x_vcproj.lua",
 		"actions/vstudio/vs200x_vcproj_user.lua",
-		"actions/vstudio/vs2003_solution.lua",
 		"actions/vstudio/vs2005_solution.lua",
 		"actions/vstudio/vs2005_csproj.lua",
 		"actions/vstudio/vs2005_csproj_user.lua",

File src/actions/vstudio/_vstudio.lua

 -- Copyright (c) 2008-2012 Jason Perkins and the Premake project
 --
 
-	premake.vstudio = { }
+	premake.vstudio = {}
 	local vstudio = premake.vstudio
 	local solution = premake.solution
 	local project = premake5.project
 
 
 --
--- The Visual Studio 2005 action, with support for the new platforms API
+-- The Visual Studio action definitions
 --
 
 	newaction {
-		trigger         = "vs2005ng",
-		shortname       = "Visual Studio 2005 Next-gen",
-		description     = "Experimental Microsoft Visual Studio 2005 project files",
+		trigger         = "vs2005",
+		shortname       = "Visual Studio 2005",
+		description     = "Generate Microsoft Visual Studio 2005 project files",
 		os              = "windows",
 
 		-- temporary, until I can phase out the legacy implementations
 		oncleantarget   = vstudio.cleantarget
 	}
 
---
--- The Visual Studio 2008 action, with support for the new platforms API
---
 
 	newaction {
-		trigger         = "vs2008ng",
-		shortname       = "Visual Studio 2008 Next-gen",
-		description     = "Experimental Microsoft Visual Studio 2008 project files",
+		trigger         = "vs2008",
+		shortname       = "Visual Studio 2008",
+		description     = "Generate Microsoft Visual Studio 2008 project files",
 		os              = "windows",
 
 		-- temporary, until I can phase out the legacy implementations
 		oncleantarget   = vstudio.cleantarget
 	}
 
---
--- The Visual Studio 2010 action, with support for the new platforms API
---
 
 	newaction {
-		trigger         = "vs2010ng",
-		shortname       = "Visual Studio 2010 Next-gen",
-		description     = "Experimental Microsoft Visual Studio 2010 project files",
+		trigger         = "vs2010",
+		shortname       = "Visual Studio 2010",
+		description     = "Generate Visual Studio 2010 project files",
 		os              = "windows",
 
 		-- temporary, until I can phase out the legacy implementations
 	}
 
 
---
--- The Visual Studio 2012 action, with support for the new platforms API
---
-
 	newaction {
 		trigger         = "vs2012",
 		shortname       = "Visual Studio 2012",
-		description     = "Experimental Microsoft Visual Studio 2012 project files",
+		description     = "Generate Visual Studio 2012 project files",
 		os              = "windows",
 
 		-- temporary, until I can phase out the legacy implementations
 
 --
 -- Mapping tables from Premake systems and architectures to Visual Studio
--- identifiers. Broken out as tables to new values can be pushed in by
+-- identifiers. Broken out as tables so new values can be pushed in by
 -- add-ons.
 --
 
 	end
 
 
-
-
------------------------------------------------------------------------------
--- Everything below this point is a candidate for deprecation
------------------------------------------------------------------------------
-
---
--- Map Premake platform identifiers to the Visual Studio versions. Adds the Visual
--- Studio specific "any" and "mixed" to make solution generation easier.
---
-
-	vstudio.platforms = { 
-		any     = "Any CPU", 
-		mixed   = "Mixed Platforms", 
-		Native  = "Win32",
-		x86     = "x86",
-		x32     = "Win32", 
-		x64     = "x64",
-		PS3     = "PS3",
-		Xbox360 = "Xbox 360",
-	}
-
-	
-
---
--- Returns the architecture identifier for a project.
--- Used by the solutions.
--- Deprecated, will be removed.
---
-
-	function vstudio.arch(prj)
-		if (prj.language == "C#") then
-			if (_ACTION < "vs2005") then
-				return ".NET"
-			else
-				return "Any CPU"
-			end
-		else
-			return "Win32"
-		end
-	end
-
-
---
--- Process the solution's list of configurations and platforms, creates a list
--- of build configuration/platform pairs in a Visual Studio compatible format.
---
-
-	function vstudio.buildconfigs(sln)
-		local cfgs = { }
-		
-		local platforms = premake.filterplatforms(sln, vstudio.platforms, "Native")
-
-		-- Figure out what's in this solution
-		local hascpp    = premake.hascppproject(sln)
-		local hasdotnet = premake.hasdotnetproject(sln)
-
-		-- "Mixed Platform" solutions are generally those containing both
-		-- C/C++ and .NET projects. Starting in VS2010, all .NET solutions
-		-- also contain the Mixed Platform option.
-		if hasdotnet and (_ACTION > "vs2008" or hascpp) then
-			table.insert(platforms, 1, "mixed")
-		end
-		
-		-- "Any CPU" is added to solutions with .NET projects. Starting in
-		-- VS2010, only pure .NET solutions get this option.
-		if hasdotnet and (_ACTION < "vs2010" or not hascpp) then
-			table.insert(platforms, 1, "any")
-		end
-
-		-- In Visual Studio 2010, pure .NET solutions replace the Win32 platform
-		-- with x86. In mixed mode solution, x86 is used in addition to Win32.
-		if _ACTION > "vs2008" then
-			local platforms2010 = { }
-			for _, platform in ipairs(platforms) do
-				if vstudio.platforms[platform] == "Win32" then
-					if hascpp then
-						table.insert(platforms2010, platform)
-					end
-					if hasdotnet then
-						table.insert(platforms2010, "x86")
-					end
-				else
-					table.insert(platforms2010, platform)
-				end
-			end
-			platforms = platforms2010
-		end
-
-
-		for _, buildcfg in ipairs(sln.configurations) do
-			for _, platform in ipairs(platforms) do
-				local entry = { }
-				entry.src_buildcfg = buildcfg
-				entry.src_platform = platform
-				
-				-- PS3 is funky and needs special handling; it's more of a build
-				-- configuration than a platform from Visual Studio's point of view				
-				if platform ~= "PS3" then
-					entry.buildcfg = buildcfg
-					entry.platform = vstudio.platforms[platform]
-				else
-					entry.buildcfg = platform .. " " .. buildcfg
-					entry.platform = "Win32"
-				end
-
-				-- create a name the way VS likes it
-				entry.name = entry.buildcfg .. "|" .. entry.platform
-				
-				-- flag the "fake" platforms added for .NET
-				entry.isreal = (platform ~= "any" and platform ~= "mixed")
-								
-				table.insert(cfgs, entry)
-			end
-		end
-		
-		return cfgs
-	end
-	
-
-
---
--- Clean Visual Studio files
---
-
-	function vstudio.cleansolution(sln)
-		premake.clean.file(sln, "%%.sln")
-		premake.clean.file(sln, "%%.suo")
-		premake.clean.file(sln, "%%.ncb")
-		-- MonoDevelop files
-		premake.clean.file(sln, "%%.userprefs")
-		premake.clean.file(sln, "%%.usertasks")
-	end
-	
-	function vstudio.cleanproject(prj)
-		local fname = project.getfilename(prj)
-
-		os.remove(fname .. ".vcproj")
-		os.remove(fname .. ".vcproj.user")
-
-		os.remove(fname .. ".vcxproj")
-		os.remove(fname .. ".vcxproj.user")
-		os.remove(fname .. ".vcxproj.filters")
-
-		os.remove(fname .. ".csproj")
-		os.remove(fname .. ".csproj.user")
-
-		os.remove(fname .. ".pidb")
-		os.remove(fname .. ".sdf")
-	end
-
-	function vstudio.cleantarget(name)
-		os.remove(name .. ".pdb")
-		os.remove(name .. ".idb")
-		os.remove(name .. ".ilk")
-		os.remove(name .. ".vshost.exe")
-		os.remove(name .. ".exe.manifest")
-	end
-	
-	
-
---
--- Assemble the project file name.
---
-
-	function vstudio.projectfile_old(prj)
-		local extension
-		if prj.language == "C#" then
-			extension = ".csproj"
-		else
-			extension = iif(_ACTION > "vs2008", ".vcxproj", ".vcproj")
-		end
-
-		local fname = path.join(prj.location, prj.name)
-		return fname..extension
-	end
-	
-
 --
 -- Returns the Visual Studio tool ID for a given project type.
 --
 		end
 	end
 
-
---
--- Register Visual Studio 2002
---
-
-	newaction {
-		trigger         = "vs2002",
-		shortname       = "Visual Studio 2002",
-		description     = "Generate Microsoft Visual Studio 2002 project files",
-		os              = "windows",
-		
-		valid_kinds     = { "ConsoleApp", "WindowedApp", "StaticLib", "SharedLib" },
-		
-		valid_languages = { "C", "C++", "C#" },
-		
-		valid_tools     = {
-			cc     = { "msc"   },
-			dotnet = { "msnet" },
-		},
-
-		onsolution = function(sln)
-			premake.generate(sln, ".sln", vstudio.sln2002.generate)
-		end,
-		
-		onproject = function(prj)
-			if premake.isdotnetproject(prj) then
-				premake.generate(prj, ".csproj", vstudio.cs2002.generate)
-				premake.generate(prj, ".csproj.user", vstudio.cs2002.generate_user)
-			else
-				premake.generate(prj, ".vcproj", vstudio.vc200x.generate)
-				premake.generate(prj, ".vcproj.user", vstudio.vc200x.generate_user)
-			end
-		end,
-		
-		oncleansolution = premake.vstudio.cleansolution,
-		oncleanproject  = premake.vstudio.cleanproject,
-		oncleantarget   = premake.vstudio.cleantarget
-	}
-
-
---
--- Register Visual Studio 2003
---
-
-	newaction {
-		trigger         = "vs2003",
-		shortname       = "Visual Studio 2003",
-		description     = "Generate Microsoft Visual Studio 2003 project files",
-		os              = "windows",
-
-		valid_kinds     = { "ConsoleApp", "WindowedApp", "StaticLib", "SharedLib" },
-		
-		valid_languages = { "C", "C++", "C#" },
-		
-		valid_tools     = {
-			cc     = { "msc"   },
-			dotnet = { "msnet" },
-		},
-
-		onsolution = function(sln)
-			premake.generate(sln, ".sln", vstudio.sln2003.generate)
-		end,
-		
-		onproject = function(prj)
-			if premake.isdotnetproject(prj) then
-				premake.generate(prj, ".csproj", vstudio.cs2002.generate)
-				premake.generate(prj, ".csproj.user", vstudio.cs2002.generate_user)
-			else
-				premake.generate(prj, ".vcproj", vstudio.vc200x.generate)
-				premake.generate(prj, ".vcproj.user", vstudio.vc200x.generate_user)
-			end
-		end,
-		
-		oncleansolution = premake.vstudio.cleansolution,
-		oncleanproject  = premake.vstudio.cleanproject,
-		oncleantarget   = premake.vstudio.cleantarget
-	}
-
-
---
--- Register Visual Studio 2005
---
-
-	newaction {
-		trigger         = "vs2005",
-		shortname       = "Visual Studio 2005",
-		description     = "Generate Microsoft Visual Studio 2005 project files",
-		os              = "windows",
-
-		valid_kinds     = { "ConsoleApp", "WindowedApp", "StaticLib", "SharedLib" },
-		
-		valid_languages = { "C", "C++", "C#" },
-		
-		valid_tools     = {
-			cc     = { "msc"   },
-			dotnet = { "msnet" },
-		},
-
-		onsolution = function(sln)
-			premake.generate(sln, ".sln", vstudio.sln2005.generate)
-		end,
-		
-		onproject = function(prj)
-			if premake.isdotnetproject(prj) then
-				premake.generate(prj, ".csproj", vstudio.cs2005.generate)
-				premake.generate(prj, ".csproj.user", vstudio.cs2005.generate_user)
-			else
-				premake.generate(prj, ".vcproj", vstudio.vc200x.generate)
-				premake.generate(prj, ".vcproj.user", vstudio.vc200x.generate_user)
-			end
-		end,
-		
-		oncleansolution = vstudio.cleansolution,
-		oncleanproject  = vstudio.cleanproject,
-		oncleantarget   = vstudio.cleantarget
-	}
-
-
---
--- Register Visual Studio 2008
---
-
-	newaction {
-		trigger         = "vs2008",
-		shortname       = "Visual Studio 2008",
-		description     = "Generate Microsoft Visual Studio 2008 project files",
-		os              = "windows",
-
-		valid_kinds     = { "ConsoleApp", "WindowedApp", "StaticLib", "SharedLib" },
-		
-		valid_languages = { "C", "C++", "C#" },
-		
-		valid_tools     = {
-			cc     = { "msc"   },
-			dotnet = { "msnet" },
-		},
-
-		onsolution = function(sln)
-			premake.generate(sln, ".sln", vstudio.sln2005.generate)
-		end,
-		
-		onproject = function(prj)
-			if premake.isdotnetproject(prj) then
-				premake.generate(prj, ".csproj", vstudio.cs2005.generate)
-				premake.generate(prj, ".csproj.user", vstudio.cs2005.generate_user)
-			else
-				premake.generate(prj, ".vcproj", vstudio.vc200x.generate)
-				premake.generate(prj, ".vcproj.user", vstudio.vc200x.generate_user)
-			end
-		end,
-		
-		oncleansolution = vstudio.cleansolution,
-		oncleanproject  = vstudio.cleanproject,
-		oncleantarget   = vstudio.cleantarget
-	}
-
-		
---
--- Register Visual Studio 2010
---
-
-	newaction 
-	{
-		trigger         = "vs2010",
-		shortname       = "Visual Studio 2010",
-		description     = "Generate Visual Studio 2010 project files",
-		os              = "windows",
-
-		valid_kinds     = { "ConsoleApp", "WindowedApp", "StaticLib", "SharedLib" },
-		
-		valid_languages = { "C", "C++", "C#"},
-		
-		valid_tools     = {
-			cc     = { "msc"   },
-			dotnet = { "msnet" },
-		},
-
-		onsolution = function(sln)
-			premake.generate(sln, ".sln", vstudio.sln2005.generate)
-		end,
-		
-		onproject = function(prj)
-			if premake.isdotnetproject(prj) then
-				premake.generate(prj, ".csproj", vstudio.cs2005.generate)
-				premake.generate(prj, ".csproj.user", vstudio.cs2005.generate_user)
-			else
-			premake.generate(prj, ".vcxproj", premake.vs2010_vcxproj)
-			premake.generate(prj, ".vcxproj.user", premake.vs2010_vcxproj_user)
-			premake.generate(prj, ".vcxproj.filters", vstudio.vc2010.generate_filters)
-			end
-		end,
-		
-
-		oncleansolution = premake.vstudio.cleansolution,
-		oncleanproject  = premake.vstudio.cleanproject,
-		oncleantarget   = premake.vstudio.cleantarget
-	}

File src/actions/vstudio/vs2002_csproj.lua

---
--- vs2002_csproj.lua
--- Generate a Visual Studio 2002/2003 C# project.
--- Copyright (c) 2009-2011 Jason Perkins and the Premake project
---
-
-	premake.vstudio.cs2002 = { }
-	local vstudio = premake.vstudio
-	local cs2002 = premake.vstudio.cs2002
-
-	
---
--- Figure out what elements a particular file need in its item block,
--- based on its build action and any related files in the project.
--- 
-
-	local function getelements(prj, action, fname)
-	
-		if action == "Compile" and fname:endswith(".cs") then
-			return "SubTypeCode"
-		end
-
-		if action == "EmbeddedResource" and fname:endswith(".resx") then
-			-- is there a matching *.cs file?
-			local basename = fname:sub(1, -6)
-			local testname = path.getname(basename .. ".cs")
-			if premake.findfile(prj, testname) then
-				return "Dependency", testname
-			end
-		end
-		
-		return "None"
-	end
-
-
---
--- Write out the <Files> element.
---
-
-	function cs2002.Files(prj)
-		local tr = premake.project.buildsourcetree(prj)
-		premake.tree.traverse(tr, {
-			onleaf = function(node)
-				local action = premake.dotnet.getbuildaction(node.cfg)
-				local fname  = path.translate(premake.esc(node.cfg.name), "\\")
-				local elements, dependency = getelements(prj, action, node.path)
-
-				_p(4,'<File')
-				_p(5,'RelPath = "%s"', fname)
-				_p(5,'BuildAction = "%s"', action)
-				if dependency then
-					_p(5,'DependentUpon = "%s"', premake.esc(path.translate(dependency, "\\")))
-				end
-				if elements == "SubTypeCode" then
-					_p(5,'SubType = "Code"')
-				end
-				_p(4,'/>')
-			end
-		}, false)
-	end
-
-
---
--- The main function: write the project file.
---
-
-	function cs2002.generate(prj)
-		io.eol = "\r\n"
-		_p('<VisualStudioProject>')
-
-		_p(1,'<CSHARP')
-		_p(2,'ProjectType = "Local"')
-		_p(2,'ProductVersion = "%s"', iif(_ACTION == "vs2002", "7.0.9254", "7.10.3077"))
-		_p(2,'SchemaVersion = "%s"', iif(_ACTION == "vs2002", "1.0", "2.0"))
-		_p(2,'ProjectGuid = "{%s}"', prj.uuid)
-		_p(1,'>')
-
-		_p(2,'<Build>')
-		
-		-- Write out project-wide settings
-		_p(3,'<Settings')
-		_p(4,'ApplicationIcon = ""')
-		_p(4,'AssemblyKeyContainerName = ""')
-		_p(4,'AssemblyName = "%s"', prj.buildtarget.basename)
-		_p(4,'AssemblyOriginatorKeyFile = ""')
-		_p(4,'DefaultClientScript = "JScript"')
-		_p(4,'DefaultHTMLPageLayout = "Grid"')
-		_p(4,'DefaultTargetSchema = "IE50"')
-		_p(4,'DelaySign = "false"')
-		if _ACTION == "vs2002" then
-			_p(4,'NoStandardLibraries = "false"')
-		end
-		_p(4,'OutputType = "%s"', premake.dotnet.getkind(prj))
-		if _ACTION == "vs2003" then
-			_p(4,'PreBuildEvent = ""')
-			_p(4,'PostBuildEvent = ""')
-		end
-		_p(4,'RootNamespace = "%s"', prj.buildtarget.basename)
-		if _ACTION == "vs2003" then
-			_p(4,'RunPostBuildEvent = "OnBuildSuccess"')
-		end
-		_p(4,'StartupObject = ""')
-		_p(3,'>')
-
-		-- Write out configuration blocks		
-		for cfg in premake.eachconfig(prj) do
-			_p(4,'<Config')
-			_p(5,'Name = "%s"', premake.esc(cfg.name))
-			_p(5,'AllowUnsafeBlocks = "%s"', iif(cfg.flags.Unsafe, "true", "false"))
-			_p(5,'BaseAddress = "285212672"')
-			_p(5,'CheckForOverflowUnderflow = "false"')
-			_p(5,'ConfigurationOverrideFile = ""')
-			_p(5,'DefineConstants = "%s"', premake.esc(table.concat(cfg.defines, ";")))
-			_p(5,'DocumentationFile = ""')
-			_p(5,'DebugSymbols = "%s"', iif(cfg.flags.Symbols, "true", "false"))
-			_p(5,'FileAlignment = "4096"')
-			_p(5,'IncrementalBuild = "false"')
-			if _ACTION == "vs2003" then
-				_p(5,'NoStdLib = "false"')
-				_p(5,'NoWarn = ""')
-			end
-			_p(5,'Optimize = "%s"', iif(cfg.flags.Optimize or cfg.flags.OptimizeSize or cfg.flags.OptimizeSpeed, "true", "false"))
-			_p(5,'OutputPath = "%s"', premake.esc(cfg.buildtarget.directory))
-			_p(5,'RegisterForComInterop = "false"')
-			_p(5,'RemoveIntegerChecks = "false"')
-			_p(5,'TreatWarningsAsErrors = "%s"', iif(cfg.flags.FatalWarnings, "true", "false"))
-			_p(5,'WarningLevel = "4"')
-			_p(4,'/>')
-		end
-		_p(3,'</Settings>')
-
-		-- List assembly references
-		_p(3,'<References>')
-		for _, ref in ipairs(premake.getlinks(prj, "siblings", "object")) do
-			_p(4,'<Reference')
-			_p(5,'Name = "%s"', ref.buildtarget.basename)
-			_p(5,'Project = "{%s}"', ref.uuid)
-			_p(5,'Package = "{%s}"', vstudio.tool(ref))
-			_p(4,'/>')
-		end
-		for _, linkname in ipairs(premake.getlinks(prj, "system", "fullpath")) do
-			_p(4,'<Reference')
-			_p(5,'Name = "%s"', path.getbasename(linkname))
-			_p(5,'AssemblyName = "%s"', path.getname(linkname))
-			if path.getdirectory(linkname) ~= "." then
-				_p(5,'HintPath = "%s"', path.translate(linkname, "\\"))
-			end
-			_p(4,'/>')
-		end
-		_p(3,'</References>')
-		
-		_p(2,'</Build>')
-
-		-- List source files
-		_p(2,'<Files>')
-		_p(3,'<Include>')
-		cs2002.Files(prj)
-		_p(3,'</Include>')
-		_p(2,'</Files>')
-		
-		_p(1,'</CSHARP>')
-		_p('</VisualStudioProject>')
-
-	end

File src/actions/vstudio/vs2002_csproj_user.lua

---
--- vs2002_csproj_user.lua
--- Generate a Visual Studio 2002/2003 C# .user file.
--- Copyright (c) 2009 Jason Perkins and the Premake project
---
-
-	local cs2002 = premake.vstudio.cs2002
-
-	function cs2002.generate_user(prj)
-		io.eol = "\r\n"
-
-		_p('<VisualStudioProject>')
-		_p(1,'<CSHARP>')
-		_p(2,'<Build>')
-		
-		-- Visual Studio wants absolute paths
-		local refpaths = table.translate(prj.libdirs, function(v) return path.getabsolute(prj.location .. "/" .. v) end)
-		_p(3,'<Settings ReferencePath = "%s">', path.translate(table.concat(refpaths, ";"), "\\"))
-		
-		for cfg in premake.eachconfig(prj) do
-			_p(4,'<Config')
-			_p(5,'Name = "%s"', premake.esc(cfg.name))
-			_p(5,'EnableASPDebugging = "false"')
-			_p(5,'EnableASPXDebugging = "false"')
-			_p(5,'EnableUnmanagedDebugging = "false"')
-			_p(5,'EnableSQLServerDebugging = "false"')
-			_p(5,'RemoteDebugEnabled = "false"')
-			_p(5,'RemoteDebugMachine = ""')
-			_p(5,'StartAction = "Project"')
-			_p(5,'StartArguments = ""')
-			_p(5,'StartPage = ""')
-			_p(5,'StartProgram = ""')
-			_p(5,'StartURL = ""')
-			_p(5,'StartWorkingDirectory = ""')
-			_p(5,'StartWithIE = "false"')
-			_p(4,'/>')
-		end
-		
-		_p(3,'</Settings>')
-		_p(2,'</Build>')
-		_p(2,'<OtherProjectSettings')
-		_p(3,'CopyProjectDestinationFolder = ""')
-		_p(3,'CopyProjectUncPath = ""')
-		_p(3,'CopyProjectOption = "0"')
-		_p(3,'ProjectView = "ProjectFiles"')
-		_p(3,'ProjectTrust = "0"')
-		_p(2,'/>')
-		
-		_p(1,'</CSHARP>')
-		_p('</VisualStudioProject>')
-		
-	end

File src/actions/vstudio/vs2002_solution.lua

---
--- vs2002_solution.lua
--- Generate a Visual Studio 2002 solution.
--- Copyright (c) 2009-2011 Jason Perkins and the Premake project
---
-
-	premake.vstudio.sln2002 = { }
-	local vstudio = premake.vstudio
-	local sln2002 = premake.vstudio.sln2002
-
-	function sln2002.generate(sln)
-		io.eol = '\r\n'
-
-		-- Precompute Visual Studio configurations
-		sln.vstudio_configs = premake.vstudio.buildconfigs(sln)
-
-		_p('Microsoft Visual Studio Solution File, Format Version 7.00')
-		
-		-- Write out the list of project entries
-		for prj in premake.solution.eachproject(sln) do
-			local projpath = path.translate(path.getrelative(sln.location, vstudio.projectfile_old(prj)))
-			_p('Project("{%s}") = "%s", "%s", "{%s}"', vstudio.tool(prj), prj.name, projpath, prj.uuid)
-			_p('EndProject')
-		end
-
-		_p('Global')
-		_p(1,'GlobalSection(SolutionConfiguration) = preSolution')
-		for i, cfgname in ipairs(sln.configurations) do
-			_p(2,'ConfigName.%d = %s', i - 1, cfgname)
-		end
-		_p(1,'EndGlobalSection')
-
-		_p(1,'GlobalSection(ProjectDependencies) = postSolution')
-		_p(1,'EndGlobalSection')
-		
-		_p(1,'GlobalSection(ProjectConfiguration) = postSolution')
-		for prj in premake.solution.eachproject(sln) do
-			for _, cfgname in ipairs(sln.configurations) do
-				_p(2,'{%s}.%s.ActiveCfg = %s|%s', prj.uuid, cfgname, cfgname, vstudio.arch(prj))
-				_p(2,'{%s}.%s.Build.0 = %s|%s', prj.uuid, cfgname, cfgname, vstudio.arch(prj))
-			end
-		end
-		_p(1,'EndGlobalSection')
-		_p(1,'GlobalSection(ExtensibilityGlobals) = postSolution')
-		_p(1,'EndGlobalSection')
-		_p(1,'GlobalSection(ExtensibilityAddIns) = postSolution')
-		_p(1,'EndGlobalSection')
-		
-		_p('EndGlobal')
-	end
-	

File src/actions/vstudio/vs2003_solution.lua

---
--- vs2003_solution.lua
--- Generate a Visual Studio 2003 solution.
--- Copyright (c) 2009-2011 Jason Perkins and the Premake project
---
-
-	premake.vstudio.sln2003 = { }
-	local vstudio = premake.vstudio
-	local sln2003 = premake.vstudio.sln2003
-
-
-	function sln2003.generate(sln)
-		io.eol = '\r\n'
-
-		-- Precompute Visual Studio configurations
-		sln.vstudio_configs = premake.vstudio.buildconfigs(sln)
-
-		_p('Microsoft Visual Studio Solution File, Format Version 8.00')
-
-		-- Write out the list of project entries
-		for prj in premake.solution.eachproject(sln) do
-			local projpath = path.translate(path.getrelative(sln.location, vstudio.projectfile_old(prj)))
-			_p('Project("{%s}") = "%s", "%s", "{%s}"', vstudio.tool(prj), prj.name, projpath, prj.uuid)
-			
-			local deps = premake.getdependencies(prj)
-			if #deps > 0 then
-				_p('\tProjectSection(ProjectDependencies) = postProject')
-				for _, dep in ipairs(deps) do
-					_p('\t\t{%s} = {%s}', dep.uuid, dep.uuid)
-				end
-				_p('\tEndProjectSection')
-			end
-			
-			_p('EndProject')
-		end
-
-		_p('Global')
-		_p('\tGlobalSection(SolutionConfiguration) = preSolution')
-		for _, cfgname in ipairs(sln.configurations) do
-			_p('\t\t%s = %s', cfgname, cfgname)
-		end
-		_p('\tEndGlobalSection')
-		
-		_p('\tGlobalSection(ProjectDependencies) = postSolution')
-		_p('\tEndGlobalSection')
-		
-		_p('\tGlobalSection(ProjectConfiguration) = postSolution')
-		for prj in premake.solution.eachproject(sln) do
-			for _, cfgname in ipairs(sln.configurations) do
-				_p('\t\t{%s}.%s.ActiveCfg = %s|%s', prj.uuid, cfgname, cfgname, vstudio.arch(prj))
-				_p('\t\t{%s}.%s.Build.0 = %s|%s', prj.uuid, cfgname, cfgname, vstudio.arch(prj))
-			end
-		end
-		_p('\tEndGlobalSection')
-
-		_p('\tGlobalSection(ExtensibilityGlobals) = postSolution')
-		_p('\tEndGlobalSection')
-		_p('\tGlobalSection(ExtensibilityAddIns) = postSolution')
-		_p('\tEndGlobalSection')
-		
-		_p('EndGlobal')
-	end

File src/actions/vstudio/vs2005_csproj.lua

 -- Copyright (c) 2009-2012 Jason Perkins and the Premake project
 --
 
-	premake.vstudio.cs2005 = { }
+	premake.vstudio.cs2005 = {}
 	local vstudio = premake.vstudio
 	local cs2005  = premake.vstudio.cs2005
 	local project = premake5.project
 			_x(2,'<PlatformTarget>%s</PlatformTarget>', arch)
 		end
 	end
-
-
-
------------------------------------------------------------------------------
--- Everything below this point is a candidate for deprecation
------------------------------------------------------------------------------
-
---
--- Figure out what elements a particular source code file need in its item
--- block, based on its build action and any related files in the project.
--- 
-	
-	local function getelements(prj, action, fname)
-	
-		if action == "Compile" and fname:endswith(".cs") then
-			if fname:endswith(".Designer.cs") then
-				-- is there a matching *.cs file?
-				local basename = fname:sub(1, -13)
-				local testname = basename .. ".cs"
-				if premake.findfile(prj, testname) then
-					return "Dependency", testname
-				end
-				-- is there a matching *.resx file?
-				testname = basename .. ".resx"
-				if premake.findfile(prj, testname) then
-					return "AutoGen", testname
-				end
-			else
-				-- is there a *.Designer.cs file?
-				local basename = fname:sub(1, -4)
-				local testname = basename .. ".Designer.cs"
-				if premake.findfile(prj, testname) then
-					return "SubTypeForm"
-				end
-			end
-		end
-
-		if action == "EmbeddedResource" and fname:endswith(".resx") then
-			-- is there a matching *.cs file?
-			local basename = fname:sub(1, -6)
-			local testname = path.getname(basename .. ".cs")
-			if premake.findfile(prj, testname) then
-				if premake.findfile(prj, basename .. ".Designer.cs") then
-					return "DesignerType", testname
-				else
-					return "Dependency", testname
-				end
-			else
-				-- is there a matching *.Designer.cs?
-				testname = path.getname(basename .. ".Designer.cs")
-				if premake.findfile(prj, testname) then
-					return "AutoGenerated"
-				end
-			end
-		end
-				
-		if action == "Content" then
-			return "CopyNewest"
-		end
-		
-		return "None"
-	end
-
-
---
--- Write out the <Files> element.
---
-
-	function cs2005.files_old(prj)
-		local tr = premake.project.buildsourcetree(prj)
-		premake.tree.traverse(tr, {
-			onleaf = function(node)
-				local action = premake.dotnet.getbuildaction(node.cfg)
-				local fname  = path.translate(premake.esc(node.cfg.name), "\\")
-				local elements, dependency = getelements(prj, action, node.path)
-
-				if elements == "None" then
-					_p('    <%s Include="%s" />', action, fname)
-				else
-					_p('    <%s Include="%s">', action, fname)
-					if elements == "AutoGen" then
-						_p('      <AutoGen>True</AutoGen>')
-					elseif elements == "AutoGenerated" then
-						_p('      <SubType>Designer</SubType>')
-						_p('      <Generator>ResXFileCodeGenerator</Generator>')
-						_p('      <LastGenOutput>%s.Designer.cs</LastGenOutput>', premake.esc(path.getbasename(node.name)))
-					elseif elements == "SubTypeDesigner" then
-						_p('      <SubType>Designer</SubType>')
-					elseif elements == "SubTypeForm" then
-						_p('      <SubType>Form</SubType>')
-					elseif elements == "PreserveNewest" then
-						_p('      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>')
-					end
-					if dependency then
-						_p('      <DependentUpon>%s</DependentUpon>', path.translate(premake.esc(dependency), "\\"))
-					end
-					_p('    </%s>', action)
-				end
-			end
-		}, false)
-	end
-
-
---
--- Write the opening PropertyGroup, which contains the project-level settings.
---
-
-	function cs2005.projectsettings_old(prj)
-		local version = {
-			vs2005 = '8.0.50727',
-			vs2008 = '9.0.21022',
-			vs2010 = '8.0.30703',
-			vs2012 = '8.0.30703',
-		}
-		
-		local frameworks = {
-			vs2010 = "4.0",
-			vs2012 = "4.5",
-		}
-
-		_p('  <PropertyGroup>')
-		_p('    <Configuration Condition=" \'$(Configuration)\' == \'\' ">%s</Configuration>', premake.esc(prj.solution.configurations[1]))
-		_p('    <Platform Condition=" \'$(Platform)\' == \'\' ">%s</Platform>', cs2005.arch(prj))
-		_p('    <ProductVersion>%s</ProductVersion>', version[_ACTION])
-		_p('    <SchemaVersion>2.0</SchemaVersion>')
-		_p('    <ProjectGuid>{%s}</ProjectGuid>', prj.uuid)
-		_p('    <OutputType>%s</OutputType>', premake.dotnet.getkind(prj))
-		_p('    <AppDesignerFolder>Properties</AppDesignerFolder>')
-		_p('    <RootNamespace>%s</RootNamespace>', prj.buildtarget.basename)
-		_p('    <AssemblyName>%s</AssemblyName>', prj.buildtarget.basename)
-
-		local framework = prj.framework or frameworks[_ACTION]
-		if framework then
-			_p('    <TargetFrameworkVersion>v%s</TargetFrameworkVersion>', framework)
-		end
-
-		if _ACTION >= "vs2010" then
-			_p('    <TargetFrameworkProfile>Client</TargetFrameworkProfile>')
-			_p('    <FileAlignment>512</FileAlignment>')
-		end
-		
-		_p('  </PropertyGroup>')
-	end
-
-
---
--- The main function: write the project file.
---
-
-	function cs2005.generate(prj)
-		io.eol = "\r\n"
-		io.indent = "  "
-
-		cs2005.projectelement(prj)
-		cs2005.projectsettings_old(prj)
-
-		for cfg in premake.eachconfig(prj) do
-			cs2005.propertyGroup(cfg)
-
-			if cfg.flags.Symbols then
-				_p('    <DebugSymbols>true</DebugSymbols>')
-				_p('    <DebugType>full</DebugType>')
-			else
-				_p('    <DebugType>pdbonly</DebugType>')
-			end
-			_p('    <Optimize>%s</Optimize>', iif(cfg.flags.Optimize or cfg.flags.OptimizeSize or cfg.flags.OptimizeSpeed, "true", "false"))
-			_p('    <OutputPath>%s</OutputPath>', cfg.buildtarget.directory)
-			_p('    <DefineConstants>%s</DefineConstants>', table.concat(premake.esc(cfg.defines), ";"))
-			_p('    <ErrorReport>prompt</ErrorReport>')
-			_p('    <WarningLevel>4</WarningLevel>')
-			if cfg.flags.Unsafe then
-				_p('    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>')
-			end
-			if cfg.flags.FatalWarnings then
-				_p('    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>')
-			end
-			_p('  </PropertyGroup>')
-		end
-
-		_p('  <ItemGroup>')
-		for _, ref in ipairs(premake.getlinks(prj, "siblings", "object")) do
-			_p('    <ProjectReference Include="%s">', path.translate(path.getrelative(prj.location, vstudio.projectfile_old(ref)), "\\"))
-			_p('      <Project>{%s}</Project>', ref.uuid)
-			_p('      <Name>%s</Name>', premake.esc(ref.name))
-			_p('    </ProjectReference>')
-		end
-		for _, linkname in ipairs(premake.getlinks(prj, "system", "basename")) do
-			_p('    <Reference Include="%s" />', premake.esc(linkname))
-		end
-		_p('  </ItemGroup>')
-
-		_p('  <ItemGroup>')
-		cs2005.files_old(prj)
-		_p('  </ItemGroup>')
-
-		_p('  <Import Project="$(MSBuildBinPath)\\Microsoft.CSharp.targets" />')
-		_p('  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.')
-		_p('       Other similar extension points exist, see Microsoft.Common.targets.')
-		_p('  <Target Name="BeforeBuild">')
-		_p('  </Target>')
-		_p('  <Target Name="AfterBuild">')
-		_p('  </Target>')
-		_p('  -->')
-		_p('</Project>')
-		
-	end
-

File src/actions/vstudio/vs2005_csproj_user.lua

 		_p('  </PropertyGroup>')
 		_p('</Project>')
 	end
-
-
------------------------------------------------------------------------------
--- Everything below this point is a candidate for deprecation
------------------------------------------------------------------------------
-
-	function cs2005.generate_user(prj)
-		io.eol = "\r\n"
-		
-		_p('<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">')
-		_p('  <PropertyGroup>')
-		
-		local refpaths = table.translate(prj.libdirs, function(v) return path.getabsolute(prj.location .. "/" .. v) end)
-		_p('    <ReferencePath>%s</ReferencePath>', path.translate(table.concat(refpaths, ";"), "\\"))
-		_p('  </PropertyGroup>')
-		_p('</Project>')
-		
-	end

File src/actions/vstudio/vs2005_solution.lua

 -- Copyright (c) 2009-2012 Jason Perkins and the Premake project
 --
 
-	premake.vstudio.sln2005 = { }
+	premake.vstudio.sln2005 = {}
 	local vstudio = premake.vstudio
 	local sln2005 = premake.vstudio.sln2005
 	local solution = premake.solution
 		_p('\t\tHideSolutionNode = FALSE')
 		_p('\tEndGlobalSection')
 	end
-
-
-
------------------------------------------------------------------------------
--- Everything below this point is a candidate for deprecation
------------------------------------------------------------------------------
-
---
--- Entry point; creates the solution file.
---
-
-	function sln2005.generate(sln)
-		io.eol = '\r\n'
-
-		-- Precompute Visual Studio configurations
-		sln.vstudio_configs = premake.vstudio.buildconfigs(sln)
-		
-		-- Mark the file as Unicode
-		_p('\239\187\191')
-
-		sln2005.header(sln)
-
-		for prj in premake.solution.eachproject(sln) do
-			sln2005.project(prj)
-		end
-
-		_p('Global')
-		sln2005.platforms(sln)
-		sln2005.project_platforms(sln)
-		sln2005.properties(sln)
-		_p('EndGlobal')
-	end
-
-
---
--- Write out an entry for a project
---
-
-	function sln2005.project(prj)
-		-- Build a relative path from the solution file to the project file
-		local projpath = path.translate(path.getrelative(prj.solution.location, vstudio.projectfile_old(prj)), "\\")
-			
-		_p('Project("{%s}") = "%s", "%s", "{%s}"', vstudio.tool(prj), prj.name, projpath, prj.uuid)
-		sln2005.projectdependencies(prj)
-		_p('EndProject')
-	end
-
-
---
--- Write out the list of project dependencies for a particular project.
---
-
-	function sln2005.projectdependencies(prj)
-		local deps = premake.getdependencies(prj)
-		if #deps > 0 then
-			_p('\tProjectSection(ProjectDependencies) = postProject')
-			for _, dep in ipairs(deps) do
-				_p('\t\t{%s} = {%s}', dep.uuid, dep.uuid)
-			end
-			_p('\tEndProjectSection')
-		end
-	end
-
-
---
--- Write out the contents of the SolutionConfigurationPlatforms section, which
--- lists all of the configuration/platform pairs that exist in the solution.
---
-
-	function sln2005.platforms(sln)
-		_p('\tGlobalSection(SolutionConfigurationPlatforms) = preSolution')
-		for _, cfg in ipairs(sln.vstudio_configs) do
-			_p('\t\t%s = %s', cfg.name, cfg.name)
-		end
-		_p('\tEndGlobalSection')
-	end
-	
-	
-
---
--- Write out the contents of the ProjectConfigurationPlatforms section, which maps
--- the configuration/platform pairs into each project of the solution.
---
-
-	function sln2005.project_platforms(sln)
-		_p('\tGlobalSection(ProjectConfigurationPlatforms) = postSolution')
-		for prj in premake.solution.eachproject(sln) do
-			for _, cfg in ipairs(sln.vstudio_configs) do
-			
-				-- .NET projects always map to the "Any CPU" platform (for now, at 
-				-- least). For C++, "Any CPU" and "Mixed Platforms" map to the first
-				-- C++ compatible target platform in the solution list.
-				local mapped
-				if premake.isdotnetproject(prj) then
-					mapped = "Any CPU"
-				else
-					if cfg.platform == "Any CPU" or cfg.platform == "Mixed Platforms" then
-						mapped = sln.vstudio_configs[3].platform
-					else
-						mapped = cfg.platform
-					end
-				end
-
-				_p('\t\t{%s}.%s.ActiveCfg = %s|%s', prj.uuid, cfg.name, cfg.buildcfg, mapped)
-				if mapped == cfg.platform or cfg.platform == "Mixed Platforms" then
-					_p('\t\t{%s}.%s.Build.0 = %s|%s',  prj.uuid, cfg.name, cfg.buildcfg, mapped)
-				end
-			end
-		end
-		_p('\tEndGlobalSection')
-	end

File src/actions/vstudio/vs200x_vcproj.lua

 -- Copyright (c) 2009-2012 Jason Perkins and the Premake project
 --
 
-	premake.vstudio.vc200x = { }
+	premake.vstudio.vc200x = {}
 	local vstudio = premake.vstudio
 	local vc200x = premake.vstudio.vc200x
 	local config = premake5.config
 			_p(4,'Detect64BitPortabilityProblems="%s"', bool(not cfg.flags.No64BitChecks))
 		end
 	end
-
-
-
-
------------------------------------------------------------------------------
--- Everything below this point is a candidate for deprecation
------------------------------------------------------------------------------
-
---
--- Write the project file header
---
-
-	function vc200x.header(element)
-		io.eol = "\r\n"
-		_p('<?xml version="1.0" encoding="Windows-1252"?>')
-		_p('<%s', element)
-		_p(1,'ProjectType="Visual C++"')
-
-		if _ACTION == "vs2002" then
-			_p(1,'Version="7.00"')
-		elseif _ACTION == "vs2003" then
-			_p(1,'Version="7.10"')
-		elseif _ACTION == "vs2005" then
-			_p(1,'Version="8.00"')
-		elseif _ACTION == "vs2008" then
-			_p(1,'Version="9.00"')
-		end
-	end
-
-
---
--- Write out the <Configuration> element.
---
-	
-	function vc200x.Configuration(name, cfg)
-		_p(2,'<Configuration')
-		_p(3,'Name="%s"', premake.esc(name))
-		_p(3,'OutputDirectory="%s"', premake.esc(cfg.buildtarget.directory))
-		_p(3,'IntermediateDirectory="%s"', premake.esc(cfg.objectsdir))
-
-		local cfgtype
-		if (cfg.kind == "SharedLib") then
-			cfgtype = 2
-		elseif (cfg.kind == "StaticLib") then
-			cfgtype = 4
-		else
-			cfgtype = 1
-		end
-		_p(3,'ConfigurationType="%s"', cfgtype)
-
-		if (cfg.flags.MFC) then
-			_p(3, 'UseOfMFC="%d"', iif(cfg.flags.StaticRuntime, 1, 2))
-		end				  
-		_p(3,'CharacterSet="%s"', iif(cfg.flags.Unicode, 1, 2))
-		if cfg.flags.Managed then
-			_p(3,'ManagedExtensions="1"')
-		end
-		_p(3,'>')
-	end
-	
-
---
--- Write out the <Files> element.
---
-
-	function vc200x.Files(prj)
-		local tr = premake.project.buildsourcetree(prj)
-		
-		tree.traverse(tr, {
-			-- folders are handled at the internal nodes
-			onbranchenter = function(node, depth)
-				_p(depth, '<Filter')
-				_p(depth, '\tName="%s"', node.name)
-				_p(depth, '\tFilter=""')
-				_p(depth, '\t>')
-			end,
-
-			onbranchexit = function(node, depth)
-				_p(depth, '</Filter>')
-			end,
-
-			-- source files are handled at the leaves
-			onleaf = function(node, depth)
-				local fname = node.cfg.name
-				
-				_p(depth, '<File')
-				_p(depth, '\tRelativePath="%s"', path.translate(fname, "\\"))
-				_p(depth, '\t>')
-				depth = depth + 1
-
-				-- handle file configuration stuff. This needs to be cleaned up and simplified.
-				-- configurations are cached, so this isn't as bad as it looks
-				for _, cfginfo in ipairs(prj.solution.vstudio_configs) do
-					if cfginfo.isreal then
-						local cfg = premake.getconfig(prj, cfginfo.src_buildcfg, cfginfo.src_platform)
-						
-						local usePCH = (not prj.flags.NoPCH and prj.pchsource == node.cfg.name)
-						local isSourceCode = path.iscppfile(fname)
-						local needsCompileAs = (path.iscfile(fname) ~= premake.project.iscproject(prj))
-						
-						if usePCH or (isSourceCode and needsCompileAs) then
-							_p(depth, '<FileConfiguration')
-							_p(depth, '\tName="%s"', cfginfo.name)
-							_p(depth, '\t>')
-							_p(depth, '\t<Tool')
-							_p(depth, '\t\tName="%s"', iif(cfg.system == "Xbox360", 
-							                                 "VCCLX360CompilerTool", 
-							                                 "VCCLCompilerTool"))
-							if needsCompileAs then
-								_p(depth, '\t\tCompileAs="%s"', iif(path.iscfile(fname), 1, 2))
-							end
-							
-							if usePCH then
-								if cfg.system == "PS3" then
-									local options = table.join(premake.snc.getcflags(cfg), 
-									                           premake.snc.getcxxflags(cfg), 
-									                           cfg.buildoptions)
-									options = table.concat(options, " ");
-									options = options .. ' --create_pch="$(IntDir)/$(TargetName).pch"'			                    
-									_p(depth, '\t\tAdditionalOptions="%s"', premake.esc(options))
-								else
-									_p(depth, '\t\tUsePrecompiledHeader="1"')
-								end
-							end
-
-							_p(depth, '\t/>')
-							_p(depth, '</FileConfiguration>')
-						end
-
-					end
-				end
-
-				depth = depth - 1
-				_p(depth, '</File>')
-			end,
-		}, false, 2)
-
-	end
-
-
---
--- Write out the <Platforms> element, listing each architecture used
--- by the project's configurations.
---
-
-	function vc200x.Platforms(prj)
-		local used = { }
-		_p(1,'<Platforms>')
-		for _, cfg in ipairs(prj.solution.vstudio_configs) do
-			if cfg.isreal and not table.contains(used, cfg.platform) then
-				table.insert(used, cfg.platform)
-				_p(2,'<Platform')
-				_p(3,'Name="%s"', cfg.platform)
-				_p(2,'/>')
-			end
-		end
-		_p(1,'</Platforms>')
-	end
-
-
---
--- Compiler block for Windows and XBox360 platforms.
---
-
-	function vc200x.VCCLCompilerTool(cfg)
-		_p(3,'<Tool')
-		_p(4,'Name="%s"', iif(cfg.platform ~= "Xbox360", "VCCLCompilerTool", "VCCLX360CompilerTool"))
-		
-		if #cfg.buildoptions > 0 then
-			_p(4,'AdditionalOptions="%s"', table.concat(premake.esc(cfg.buildoptions), " "))
-		end
-		
-		_p(4,'Optimization="%s"', vc200x.optimization(cfg))
-		
-		if cfg.flags.NoFramePointer then
-			_p(4,'OmitFramePointers="%s"', bool(true))
-		end
-		
-		if #cfg.includedirs > 0 then
-			_p(4,'AdditionalIncludeDirectories="%s"', premake.esc(path.translate(table.concat(cfg.includedirs, ";"), '\\')))
-		end
-		
-		if #cfg.defines > 0 then
-			_p(4,'PreprocessorDefinitions="%s"', premake.esc(table.concat(cfg.defines, ";")))
-		end
-		
-		if premake.config.isdebugbuild(cfg) and 
-		   cfg.debugformat ~= "c7" and 
-		   not cfg.flags.NoMinimalRebuild and 
-		   not cfg.flags.Managed 
-		then
-			_p(4,'MinimalRebuild="%s"', bool(true))
-		end
-		
-		if cfg.flags.NoExceptions then
-			_p(4,'ExceptionHandling="%s"', iif(_ACTION < "vs2005", "FALSE", 0))
-		elseif cfg.flags.SEH and _ACTION > "vs2003" then
-			_p(4,'ExceptionHandling="2"')
-		end
-		
-		if vc200x.optimization(cfg) == 0 and not cfg.flags.Managed then
-			_p(4,'BasicRuntimeChecks="3"')
-		end
-		if vc200x.optimization(cfg) ~= 0 then
-			_p(4,'StringPooling="%s"', bool(true))
-		end
-		
-		local runtime
-		if premake.config.isdebugbuild(cfg) then
-			runtime = iif(cfg.flags.StaticRuntime, 1, 3)
-		else
-			runtime = iif(cfg.flags.StaticRuntime, 0, 2)
-		end
-		_p(4,'RuntimeLibrary="%s"', runtime)
-
-		_p(4,'EnableFunctionLevelLinking="%s"', bool(true))
-
-		if _ACTION > "vs2003" and cfg.platform ~= "Xbox360" and cfg.platform ~= "x64" then
-			if cfg.flags.EnableSSE then
-				_p(4,'EnableEnhancedInstructionSet="1"')
-			elseif cfg.flags.EnableSSE2 then
-				_p(4,'EnableEnhancedInstructionSet="2"')
-			end
-		end
-	
-		if _ACTION < "vs2005" then
-			if cfg.flags.FloatFast then
-				_p(4,'ImproveFloatingPointConsistency="%s"', bool(false))
-			elseif cfg.flags.FloatStrict then
-				_p(4,'ImproveFloatingPointConsistency="%s"', bool(true))
-			end
-		else
-			if cfg.flags.FloatFast then
-				_p(4,'FloatingPointModel="2"')
-			elseif cfg.flags.FloatStrict then
-				_p(4,'FloatingPointModel="1"')
-			end
-		end
-		
-		if _ACTION < "vs2005" and not cfg.flags.NoRTTI then
-			_p(4,'RuntimeTypeInfo="%s"', bool(true))
-		elseif _ACTION > "vs2003" and cfg.flags.NoRTTI and not cfg.flags.Managed then
-			_p(4,'RuntimeTypeInfo="%s"', bool(false))
-		end
-		
-		if cfg.flags.NativeWChar then
-			_p(4,'TreatWChar_tAsBuiltInType="%s"', bool(true))
-		elseif cfg.flags.NoNativeWChar then
-			_p(4,'TreatWChar_tAsBuiltInType="%s"', bool(false))
-		end
-		
-		if not cfg.flags.NoPCH and cfg.pchheader then
-			_p(4,'UsePrecompiledHeader="%s"', iif(_ACTION < "vs2005", 3, 2))
-			_p(4,'PrecompiledHeaderThrough="%s"', path.getname(cfg.pchheader))
-		else
-			_p(4,'UsePrecompiledHeader="%s"', iif(_ACTION > "vs2003" or cfg.flags.NoPCH, 0, 2))
-		end
-		
-		vc200x.warnings(cfg)
-		
-		_p(4,'ProgramDataBaseFileName="$(OutDir)\\%s.pdb"', path.getbasename(cfg.buildtarget.name))
-		_p(4,'DebugInformationFormat="%s"', vc200x.symbols(cfg))
-		if cfg.language == "C" then
-			_p(4, 'CompileAs="1"')
-		end
-		_p(3,'/>')
-	end
-	
-	
-
---
--- Linker block for Windows and Xbox 360 platforms.
---
-
-	function vc200x.VCLinkerTool(cfg)
-		_p(3,'<Tool')
-		if cfg.kind ~= "StaticLib" then
-			_p(4,'Name="%s"', iif(cfg.platform ~= "Xbox360", "VCLinkerTool", "VCX360LinkerTool"))
-			
-			if cfg.flags.NoImportLib then
-				_p(4,'IgnoreImportLibrary="%s"', bool(true))
-			end
-			
-			if #cfg.linkoptions > 0 then
-				_p(4,'AdditionalOptions="%s"', table.concat(premake.esc(cfg.linkoptions), " "))
-			end
-			
-			if #cfg.links > 0 then
-				_p(4,'AdditionalDependencies="%s"', table.concat(premake.getlinks(cfg, "all", "fullpath"), " "))
-			end
-			
-			_p(4,'OutputFile="$(OutDir)\\%s"', cfg.buildtarget.name)
-
-			_p(4,'LinkIncremental="%s"', 
-				iif(premake.config.canincrementallink(cfg) , 2, 1))
-			
-			_p(4,'AdditionalLibraryDirectories="%s"', table.concat(premake.esc(path.translate(cfg.libdirs, '\\')) , ";"))
-			
-			local deffile = premake.findfile(cfg, ".def")
-			if deffile then
-				_p(4,'ModuleDefinitionFile="%s"', deffile)
-			end
-			
-			if cfg.flags.NoManifest then
-				_p(4,'GenerateManifest="%s"', bool(false))
-			end
-			
-			_p(4,'GenerateDebugInformation="%s"', bool(vc200x.symbols(cfg) ~= 0))
-			
-			if vc200x.symbols(cfg) >= 3 then
-				_p(4,'ProgramDataBaseFileName="$(OutDir)\\%s.pdb"', path.getbasename(cfg.buildtarget.name))
-			end
-			
-			_p(4,'SubSystem="%s"', iif(cfg.kind == "ConsoleApp", 1, 2))
-			
-			if vc200x.optimization(cfg) ~= 0 then
-				_p(4,'OptimizeReferences="2"')
-				_p(4,'EnableCOMDATFolding="2"')
-			end
-			
-			if (cfg.kind == "ConsoleApp" or cfg.kind == "WindowedApp") and not cfg.flags.WinMain then
-				_p(4,'EntryPointSymbol="mainCRTStartup"')
-			end
-			
-			if cfg.kind == "SharedLib" then
-				local implibname = cfg.linktarget.fullpath
-				_p(4,'ImportLibrary="%s"', iif(cfg.flags.NoImportLib, cfg.objectsdir .. "\\" .. path.getname(implibname), implibname))
-			end
-			
-			_p(4,'TargetMachine="%d"', iif(cfg.platform == "x64", 17, 1))
-		
-		else
-			_p(4,'Name="VCLibrarianTool"')
-		
-			if #cfg.links > 0 then
-				_p(4,'AdditionalDependencies="%s"', table.concat(premake.getlinks(cfg, "all", "fullpath"), " "))
-			end
-		
-			_p(4,'OutputFile="$(OutDir)\\%s"', cfg.buildtarget.name)
-
-			if #cfg.libdirs > 0 then
-				_p(4,'AdditionalLibraryDirectories="%s"', premake.esc(path.translate(table.concat(cfg.libdirs , ";"))))
-			end
-
-			local addlOptions = {}
-			if cfg.platform == "x32" then
-				table.insert(addlOptions, "/MACHINE:X86")
-			elseif cfg.platform == "x64" then
-				table.insert(addlOptions, "/MACHINE:X64")
-			end
-			addlOptions = table.join(addlOptions, cfg.linkoptions)
-			if #addlOptions > 0 then
-				_p(4,'AdditionalOptions="%s"', table.concat(premake.esc(addlOptions), " "))
-			end
-		end
-		
-		_p(3,'/>')
-	end
-	
-	
---
--- Compiler and linker blocks for the PS3 platform, which uses Sony's SNC.
---
-
-	function vc200x.VCCLCompilerTool_PS3(cfg)
-		_p(3,'<Tool')
-		_p(4,'Name="VCCLCompilerTool"')
-
-		local buildoptions = table.join(premake.snc.getcflags(cfg), premake.snc.getcxxflags(cfg), cfg.buildoptions)
-		if not cfg.flags.NoPCH and cfg.pchheader then
-			_p(4,'UsePrecompiledHeader="%s"', iif(_ACTION < "vs2005", 3, 2))
-			_p(4,'PrecompiledHeaderThrough="%s"', path.getname(cfg.pchheader))
-			table.insert(buildoptions, '--use_pch="$(IntDir)/$(TargetName).pch"')
-		else
-			_p(4,'UsePrecompiledHeader="%s"', iif(_ACTION > "vs2003" or cfg.flags.NoPCH, 0, 2))
-		end
-		_p(4,'AdditionalOptions="%s"', premake.esc(table.concat(buildoptions, " ")))
-
-		if #cfg.includedirs > 0 then
-			_p(4,'AdditionalIncludeDirectories="%s"', premake.esc(path.translate(table.concat(cfg.includedirs, ";"), '\\')))
-		end
-
-		if #cfg.defines > 0 then
-			_p(4,'PreprocessorDefinitions="%s"', table.concat(premake.esc(cfg.defines), ";"))
-		end
-
-		_p(4,'ProgramDataBaseFileName="$(OutDir)\\%s.pdb"', path.getbasename(cfg.buildtarget.name))
-		_p(4,'DebugInformationFormat="0"')
-		_p(4,'CompileAs="0"')
-		_p(3,'/>')
-	end
-
-
-	function vc200x.VCLinkerTool_PS3(cfg)
-		_p(3,'<Tool')
-		if cfg.kind ~= "StaticLib" then
-			_p(4,'Name="VCLinkerTool"')
-			
-			local buildoptions = table.join(premake.snc.getldflags(cfg), cfg.linkoptions)
-			if #buildoptions > 0 then
-				_p(4,'AdditionalOptions="%s"', premake.esc(table.concat(buildoptions, " ")))
-			end
-			
-			if #cfg.links > 0 then
-				_p(4,'AdditionalDependencies="%s"', table.concat(premake.getlinks(cfg, "all", "fullpath"), " "))
-			end
-			
-			_p(4,'OutputFile="$(OutDir)\\%s"', cfg.buildtarget.name)
-			_p(4,'LinkIncremental="0"')
-			_p(4,'AdditionalLibraryDirectories="%s"', table.concat(premake.esc(path.translate(cfg.libdirs, '\\')) , ";"))
-			_p(4,'GenerateManifest="%s"', bool(false))
-			_p(4,'ProgramDatabaseFile=""')
-			_p(4,'RandomizedBaseAddress="1"')
-			_p(4,'DataExecutionPrevention="0"')			
-		else
-			_p(4,'Name="VCLibrarianTool"')
-
-			local buildoptions = table.join(premake.snc.getldflags(cfg), cfg.linkoptions)
-			if #buildoptions > 0 then
-				_p(4,'AdditionalOptions="%s"', premake.esc(table.concat(buildoptions, " ")))
-			end
-		
-			if #cfg.links > 0 then
-				_p(4,'AdditionalDependencies="%s"', table.concat(premake.getlinks(cfg, "all", "fullpath"), " "))
-			end
-		
-			_p(4,'OutputFile="$(OutDir)\\%s"', cfg.buildtarget.name)
-
-			if #cfg.libdirs > 0 then
-				_p(4,'AdditionalLibraryDirectories="%s"', premake.esc(path.translate(table.concat(cfg.libdirs , ";"))))
-			end
-		end
-		
-		_p(3,'/>')
-	end
-	
-
-
---
--- Write out the <VCManifest> element.
---
-
-	function vc200x.VCManifestTool(cfg)
-		local manifests = {}
-		for _, fname in ipairs(cfg.files) do
-			if path.getextension(fname) == ".manifest" then
-				table.insert(manifests, fname)
-			end
-		end
-		
-		_p(3,'<Tool')
-		_p(4,'Name="VCManifestTool"')
-		if #manifests > 0 then
-			_x(4,'AdditionalManifestFiles="%s"', table.concat(manifests, ";"))
-		end
-		_p(3,'/>')
-	end
-
-
---
--- Resource compiler block.
---
-
-	function vc200x.VCResourceCompilerTool(cfg)
-		_p(3,'<Tool')
-		_p(4,'Name="VCResourceCompilerTool"')
-
-		if #cfg.resoptions > 0 then
-			_p(4,'AdditionalOptions="%s"', table.concat(premake.esc(cfg.resoptions), " "))
-		end
-
-		if #cfg.defines > 0 or #cfg.resdefines > 0 then
-			_p(4,'PreprocessorDefinitions="%s"', table.concat(premake.esc(table.join(cfg.defines, cfg.resdefines)), ";"))
-		end
-
-		if #cfg.includedirs > 0 or #cfg.resincludedirs > 0 then
-			local dirs = table.join(cfg.includedirs, cfg.resincludedirs)
-			_p(4,'AdditionalIncludeDirectories="%s"', premake.esc(path.translate(table.concat(dirs, ";"), '\\')))
-		end
-
-		_p(3,'/>')
-	end
-
-
---
--- VCMIDLTool block
---
-
-	function vc200x.VCMIDLTool(cfg)
-		_p(3,'<Tool')
-		_p(4,'Name="VCMIDLTool"')
-		if cfg.platform == "x64" then
-			_p(4,'TargetEnvironment="3"')
-		end
-		_p(3,'/>')
-	end
-
-
---
--- Map project tool blocks to handler functions. Unmapped blocks will output
--- an empty <Tool> element.
---
-
-	local blockmap = 
-	{
-		VCCLCompilerTool       = vc200x.VCCLCompilerTool,
-		VCCLCompilerTool_PS3   = vc200x.VCCLCompilerTool_PS3,
-		VCLinkerTool           = vc200x.VCLinkerTool,
-		VCLinkerTool_PS3       = vc200x.VCLinkerTool_PS3,
-		VCManifestTool         = vc200x.VCManifestTool,
-		VCMIDLTool             = vc200x.VCMIDLTool,
-		VCResourceCompilerTool = vc200x.VCResourceCompilerTool,
-	}
-	
-	
---
--- Return a list of sections for a particular Visual Studio version and target platform.
---
-
-	local function getsections(version, platform)
-		if version == "vs2002" then
-			return {
-				"VCCLCompilerTool",
-				"VCCustomBuildTool",
-				"VCLinkerTool",
-				"VCMIDLTool",
-				"VCPostBuildEventTool",
-				"VCPreBuildEventTool",
-				"VCPreLinkEventTool",
-				"VCResourceCompilerTool",
-				"VCWebServiceProxyGeneratorTool",
-				"VCWebDeploymentTool"
-			}
-		end
-		if version == "vs2003" then
-			return {
-				"VCCLCompilerTool",
-				"VCCustomBuildTool",
-				"VCLinkerTool",
-				"VCMIDLTool",
-				"VCPostBuildEventTool",
-				"VCPreBuildEventTool",
-				"VCPreLinkEventTool",
-				"VCResourceCompilerTool",
-				"VCWebServiceProxyGeneratorTool",
-				"VCXMLDataGeneratorTool",
-				"VCWebDeploymentTool",
-				"VCManagedWrapperGeneratorTool",
-				"VCAuxiliaryManagedWrapperGeneratorTool"
-			}
-		end
-		if platform == "Xbox360" then
-			return {
-				"VCPreBuildEventTool",
-				"VCCustomBuildTool",
-				"VCXMLDataGeneratorTool",
-				"VCWebServiceProxyGeneratorTool",
-				"VCMIDLTool",
-				"VCCLCompilerTool",
-				"VCManagedResourceCompilerTool",
-				"VCResourceCompilerTool",
-				"VCPreLinkEventTool",
-				"VCLinkerTool",
-				"VCALinkTool",
-				"VCX360ImageTool",
-				"VCBscMakeTool",
-				"VCX360DeploymentTool",
-				"VCPostBuildEventTool",
-				"DebuggerTool",
-			}
-		end
-		if platform == "PS3" then
-			return {
-				"VCPreBuildEventTool",
-				"VCCustomBuildTool",
-				"VCXMLDataGeneratorTool",
-				"VCWebServiceProxyGeneratorTool",
-				"VCMIDLTool",
-				"VCCLCompilerTool_PS3",
-				"VCManagedResourceCompilerTool",
-				"VCResourceCompilerTool",
-				"VCPreLinkEventTool",
-				"VCLinkerTool_PS3",
-				"VCALinkTool",
-				"VCManifestTool",
-				"VCXDCMakeTool",
-				"VCBscMakeTool",
-				"VCFxCopTool",
-				"VCAppVerifierTool",
-				"VCWebDeploymentTool",
-				"VCPostBuildEventTool"
-			}	
-		else
-			return {	
-				"VCPreBuildEventTool",
-				"VCCustomBuildTool",
-				"VCXMLDataGeneratorTool",
-				"VCWebServiceProxyGeneratorTool",
-				"VCMIDLTool",
-				"VCCLCompilerTool",
-				"VCManagedResourceCompilerTool",
-				"VCResourceCompilerTool",
-				"VCPreLinkEventTool",
-				"VCLinkerTool",
-				"VCALinkTool",
-				"VCManifestTool",
-				"VCXDCMakeTool",
-				"VCBscMakeTool",
-				"VCFxCopTool",
-				"VCAppVerifierTool",
-				"VCWebDeploymentTool",
-				"VCPostBuildEventTool"
-			}	
-		end
-	end
-
-
-
---
--- The main function: write the project file.
---
-
-	function vc200x.generate(prj)
-		vc200x.header('VisualStudioProject')
-		
-		_p(1,'Name="%s"', premake.esc(prj.name))
-		_p(1,'ProjectGUID="{%s}"', prj.uuid)
-		if _ACTION > "vs2003" then
-			_p(1,'RootNamespace="%s"', prj.name)
-		end
-		_p(1,'Keyword="%s"', iif(prj.flags.Managed, "ManagedCProj", "Win32Proj"))
-		_p(1,'>')
-
-		-- list the target platforms
-		vc200x.Platforms(prj)
-
-		if _ACTION > "vs2003" then
-			_p(1,'<ToolFiles>')
-			_p(1,'</ToolFiles>')
-		end
-
-		_p(1,'<Configurations>')
-		for _, cfginfo in ipairs(prj.solution.vstudio_configs) do
-			if cfginfo.isreal then
-				local cfg = premake.getconfig(prj, cfginfo.src_buildcfg, cfginfo.src_platform)
-		
-				-- Start a configuration
-				vc200x.Configuration(cfginfo.name, cfg)				
-				for _, block in ipairs(getsections(_ACTION, cfginfo.src_platform)) do
-				
-					if blockmap[block] then
-						blockmap[block](cfg)						
-		
-					-- Build event blocks --
-					elseif block == "VCPreBuildEventTool" then
-						vc200x.buildstepsblock("VCPreBuildEventTool", cfg.prebuildcommands)
-					elseif block == "VCPreLinkEventTool" then
-						vc200x.buildstepsblock("VCPreLinkEventTool", cfg.prelinkcommands)
-					elseif block == "VCPostBuildEventTool" then
-						vc200x.buildstepsblock("VCPostBuildEventTool", cfg.postbuildcommands)
-					-- End build event blocks --
-					
-					-- Xbox 360 custom sections --
-					elseif block == "VCX360DeploymentTool" then
-						_p(3,'<Tool')
-						_p(4,'Name="VCX360DeploymentTool"')
-						_p(4,'DeploymentType="0"')
-						if #cfg.deploymentoptions > 0 then
-							_p(4,'AdditionalOptions="%s"', table.concat(premake.esc(cfg.deploymentoptions), " "))
-						end
-						_p(3,'/>')
-
-					elseif block == "VCX360ImageTool" then
-						_p(3,'<Tool')
-						_p(4,'Name="VCX360ImageTool"')
-						if #cfg.imageoptions > 0 then
-							_p(4,'AdditionalOptions="%s"', table.concat(premake.esc(cfg.imageoptions), " "))
-						end
-						if cfg.imagepath ~= nil then
-							_p(4,'OutputFileName="%s"', premake.esc(path.translate(cfg.imagepath)))
-						end
-						_p(3,'/>')
-						
-					elseif block == "DebuggerTool" then
-						_p(3,'<DebuggerTool')
-						_p(3,'/>')
-					
-					-- End Xbox 360 custom sections --
-						
-					else
-						_p(3,'<Tool')
-						_p(4,'Name="%s"', block)
-						_p(3,'/>')
-					end
-					
-				end
-
-				_p(2,'</Configuration>')
-			end
-		end
-		_p(1,'</Configurations>')
-
-		_p(1,'<References>')
-		_p(1,'</References>')
-		
-		_p(1,'<Files>')
-		vc200x.Files(prj)
-		_p(1,'</Files>')
-		
-		_p(1,'<Globals>')
-		_p(1,'</Globals>')
-		_p('</VisualStudioProject>')
-	end

File src/actions/vstudio/vs200x_vcproj_user.lua

 
 		_p(3,'/>')
 	end
-
-
-
------------------------------------------------------------------------------
--- Everything below this point is a candidate for deprecation
------------------------------------------------------------------------------
-
---
--- Generate the .vcproj.user file
---
-
-	function vc200x.generate_user(prj)
-		vc200x.header('VisualStudioUserFile')
-		
-		_p(1,'ShowAllFiles="false"')
-		_p(1,'>')
-		_p(1,'<Configurations>')
-		
-		for _, cfginfo in ipairs(prj.solution.vstudio_configs) do
-			if cfginfo.isreal then
-				local cfg = premake.getconfig(prj, cfginfo.src_buildcfg, cfginfo.src_platform)
-		
-				_p(2,'<Configuration')
-				_p(3,'Name="%s"', premake.esc(cfginfo.name))
-				_p(3,'>')
-				
-				vc200x.debugdir(cfg)
-				
-				_p(2,'</Configuration>')
-			end
-		end		
-		
-		_p(1,'</Configurations>')
-		_p('</VisualStudioUserFile>')
-	end
-
-
---
--- Output the debug settings element
---
-	function vc200x.environmentargs(cfg)
-		if cfg.environmentargs and #cfg.environmentargs > 0 then
-			_p(4,'Environment="%s"', string.gsub(table.concat(cfg.environmentargs, "&#x0A;"),'"','&quot;'))
-			if cfg.flags.EnvironmentArgsDontMerge then
-				_p(4,'EnvironmentMerge="false"')
-			end
-		end
-	end
-	
-	function vc200x.debugdir(cfg)
-		_p(3,'<DebugSettings')
-		
-		if cfg.debugcommand then
-			_x(4,'Command="%s"', path.translate(cfg.debugcommand, '\\'))
-		end
-
-		if cfg.debugdir then
-			_p(4,'WorkingDirectory="%s"', path.translate(cfg.debugdir, '\\'))
-		end
-