You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改EnvDTE生成的控制台应用的.NET版本为.NET 6.0

解决方案

你生成的项目默认是.NET Framework 4.0的原因和运行EnvDTE的项目框架版本无关,是你复制的模板本身就是Visual Studio内置的.NET Framework控制台模板,默认输出就是Framework版本。以下是两种可行的实现方案:

方案1:修改自制模板(推荐,一劳永逸)

直接调整你本地的模板文件,后续生成的所有项目都会默认是net6.0版本,操作步骤如下:

  • 进入你存放自制模板的C:\Users\Logix\Desktop\TEMPLATE目录
  • 替换目录下的.csproj文件内容为SDK风格的net6.0控制台项目配置:
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
</Project>
  • 删掉模板目录下多余的Properties\AssemblyInfo.cs、app.config文件,SDK风格项目会自动生成程序集相关属性,不需要这些冗余文件
  • 打开.vstemplate文件,找到<TemplateContent>节点下的Project条目,删掉其中和TargetFrameworkMoniker相关的属性配置,避免模板强制指定Framework版本
  • 保存所有修改后,重新运行你的EnvDTE代码即可生成net6.0版本的项目

方案2:通过EnvDTE代码动态调整

如果你不想修改模板,可以在项目生成后通过代码直接修改框架版本,在你的AddFromTemplate执行后添加如下逻辑即可:

// 获取刚生成的项目实例
Project newProject = solution.Projects.Item(1);
string csprojPath = newProject.FullName;

// 重写csproj文件为net6.0配置
string csprojContent = @"<Project Sdk=""Microsoft.NET.Sdk"">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
</Project>";
File.WriteAllText(csprojPath, csprojContent);

// 重新加载项目使配置生效
newProject.Reload();

如果需要保留原有模板的其他配置项,也可以读取原csproj内容,替换对应的TargetFramework节点即可。

内容的提问来源于stack exchange,提问作者Logix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 05:06:08