Visual Studio 从.NET Framework升级到.NET 6后,调试命令行参数突然出现

osh3o9ms  于 2023-01-27  发布在  .NET
关注(0)|答案(1)|浏览(155)

我将一个项目从.NET Framework 4.7.2升级到.NET 6。当我在Visual Studio调试器中运行该程序时,向Program.Main传递了一个意外参数(称为foo)。
foo从何而来?项目属性的Debug页面没有显示参数:

换句话说,这里没有什么可看的。然后我添加了一个bar参数:

Program.Main现在被传递了一个由两个字符串foobar组成的数组。

2mbi3lxu

2mbi3lxu1#

升级部分原来是这里的中心,最有可能的是,仅仅切换到现代的.csproj就足以引发这种怪异。
Visual Studio现在在Properties\launchSettings.json中保存应用程序参数等内容,例如:

{
  "profiles": {
    "MyProgram": {
      "commandName": "Project",
      "commandLineArgs": "bar"
    }
  }
}

在升级之前,该信息位于MyProject.csproj.user中:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
    <StartArguments>foo</StartArguments>
  </PropertyGroup>
</Project>

Visual Studio在启动调试时显然读取了两个文件;不清楚这是有意的还是仅仅是一个bug(如果.NET Upgrade Assistant只是简单地将信息从旧位置移动到新位置,这就有意义了。

溶液

我删除了.csproj.user文件,尽管删除StartArguments标记也肯定有效。不要忘记重新启动Visual Studio!

相关问题