首页 > 解决方案 > 如何在 Visual Studio 中以编程方式在调试和发布之间进行更改

问题描述

想以编程方式更改项目设置有很多这样的设置

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";

但是我找不到在调试和发布之间切换的任何选项:

在此处输入图像描述

标签: c#visual-studiovisual-studio-2019

解决方案


试试(这是为 VS2019 编写的:检查 GetActiveObject 是否适合您):

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");
            }
        }
    }
}

推荐阅读