如何编程设置Visual Studio 2019中.NET Framework C#项目的Debug属性
编程修改.NET Framework C#项目Debug属性的可行方案
可以实现,不需要操作GUI,有三类成熟的实现路径:
直接修改项目文件
.NET Framework 类C#项目的Debug配置全部存储在.csproj项目文件或.csproj.user用户配置文件的XML结构中,直接编辑XML即可完成配置修改,无需依赖任何API。
对应Debug属性页的核心配置字段如下:
StartArguments:对应GUI中的命令行参数WorkingDirectory:对应GUI中的工作目录StartAction:对应GUI中的启动操作,可选值为Project(启动项目)、Program(启动外部程序)、URL(启动浏览器访问URL)StartProgram:对应启动外部程序的路径,仅当StartAction设为Program时生效StartURL:对应启动的目标URL,仅当StartAction设为URL时生效
示例配置片段如下:
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'"> <StartArguments>--debug-mode --port 8080</StartArguments> <WorkingDirectory>C:\MyProject\bin\Debug</WorkingDirectory> <StartAction>Program</StartAction> <StartProgram>C:\Program Files\dotnet\dotnet.exe</StartProgram> </PropertyGroup>
使用Visual Studio自动化模型(EnvDTE API)
如果你的修改逻辑运行在VS上下文环境中(比如VS扩展、VS内部运行的工具),可以用官方提供的EnvDTE接口直接操作加载后的项目属性,不需要直接修改文件。
VS2019对应的EnvDTE版本为16.0,示例代码如下:
using EnvDTE; using EnvDTE80; using System.Runtime.InteropServices; // 获取VS2019的DTE实例,VS扩展中可直接通过上下文获取,外部程序可通过运行对象表获取 DTE2 dte = (DTE2)Marshal.GetActiveObject("VisualStudio.DTE.16.0"); // 获取解决方案中加载的目标项目 Project targetProject = dte.Solution.Projects.Item(1); // 定位Debug|AnyCPU配置节点 Configuration debugConfig = targetProject.ConfigurationManager.Item("Debug", "AnyCPU"); // 修改对应属性 debugConfig.Properties.Item("StartArguments").Value = "--debug-mode --port 8080"; debugConfig.Properties.Item("WorkingDirectory").Value = @"C:\MyProject\bin\Debug"; // StartAction枚举值:0=启动项目,1=启动外部程序,2=启动URL debugConfig.Properties.Item("StartAction").Value = 1; debugConfig.Properties.Item("StartProgram").Value = @"C:\Program Files\dotnet\dotnet.exe"; // 保存项目修改 targetProject.Save();
使用Microsoft.Build API(完全脱离VS环境)
如果需要在没有安装VS的环境下操作项目文件,可以使用微软官方提供的Microsoft.Build类库,通过NuGet安装即可使用。
示例代码如下:
using Microsoft.Build.Evaluation; using System.Linq; // 加载目标.csproj文件 Project project = new Project(@"C:\MyProject\MyProject.csproj"); // 定位Debug配置对应的PropertyGroup节点 var debugPropertyGroup = project.Xml.PropertyGroups .First(pg => pg.Condition == "'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'"); // 写入配置 debugPropertyGroup.SetProperty("StartArguments", "--debug-mode --port 8080"); debugPropertyGroup.SetProperty("WorkingDirectory", @"C:\MyProject\bin\Debug"); debugPropertyGroup.SetProperty("StartAction", "Program"); debugPropertyGroup.SetProperty("StartProgram", @"C:\Program Files\dotnet\dotnet.exe"); // 保存修改 project.Save();
使用注意:需要先安装Microsoft.Build和Microsoft.Build.Utilities.Core两个NuGet包,修改后的项目如果已经在VS中打开,会触发重载提示。
内容的提问来源于stack exchange,提问作者Brie
相关产品推荐
相关产品推荐

