Reputation: 39
want to change project settings programatically there are many settings like this
EnvDTE80.DTE2 dte2 = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.12.0");
Project project = dte2.Solution.Projects.Item(1);
Configuration configuration = project.ConfigurationManager.ActiveConfiguration;
configuration.Properties.Item("StartAction").Value = VSLangProj.prjStartAction.prjStartActionProgram;
configuration.Properties.Item("StartProgram").Value = "your exe file";
configuration.Properties.Item("StartArguments").Value = "command line arguments";
bu i cant find any option to switch between Debug and Release :
Upvotes: 2
Views: 391
Reputation: 9475
Try (this was written for VS2019: check the GetActiveObject is right for you):
using EnvDTE80;
using System;
namespace SelectConfig
{
class Program
{
static void Main(string[] args)
{
ChangeConfiguration("Release", "Any CPU");
}
private static void ChangeConfiguration(string configurationName, string platformName)
{
DTE2 dte2 = (DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.16.0");
bool found = false;
foreach (SolutionConfiguration2 configuration in dte2.Solution.SolutionBuild.SolutionConfigurations)
{
if (configuration.Name == configurationName && configuration.PlatformName == platformName)
{
configuration.Activate();
found = true;
break;
}
}
if (found)
{
SolutionConfiguration2 finalConfig = (SolutionConfiguration2)dte2.Solution.SolutionBuild.ActiveConfiguration;
Console.WriteLine($"End Configuration: {finalConfig.Name}/{finalConfig.PlatformName}");
}
else
{
Console.WriteLine($"Requested configuration {configurationName}/{platformName} not found");
}
}
}
}
Upvotes: 1