Microsoft Visual Studio更改了我的参数

时间:2019-06-27 08:31:30

标签: visual-studio

尝试通过Microsoft Visual Studio调试器运行程序,并在Command Arguments字段的“项目”->“属性”->“配置属性”->“调试”中添加了参数。

我的一个参数包含字符串"<u>",Visual Studio将其更改为"<u xmlns="http://schemas.microsoft.com/developer/msbuild/2003">"。这既是意料之外的,也是无益的。我的程序不希望也不希望传递所有这些多余的东西,而不是传递我要传递的字符串。

例如,有问题的参数为-nlp:"<u>",Visual Studio将其更改为-nlp:"<u xmlns="http://schemas.microsoft.com/developer/msbuild/2003>"。预期的结果是它保持输入:-nlp:"<u>"。这是一个示例,但是实际上有两个参数以这种方式受到影响。两者都通过添加相同的字符串来“增强”。如果使用其他值,则它们总是会以相同的方式受到影响。看来,用尖括号包围的任何弦线都是这种弦线修饰的合理选择。

VS changing my parameters

如何配置Visual Studio不进行此更改?

我的VS版本详细信息是:-

Microsoft Visual Studio Ultimate 2012

版本11.0.61219.00更新5

1 个答案:

答案 0 :(得分:1)

Visual Studio 2017或更高版本似乎不存在此问题(我尚未测试2013或2015)。

调试参数的存储方式取决于项目类型的程序包(C,C#,C ++等),即使它们都使用MsBuild系统也是如此。

此外,在没有人工干预的情况下,调试参数也不存储在项目文件(.csproj,.vcxproj等)中,而是存储在.user文件中(因此,每个用户可能有所不同)。

对于Visual Studio 2017,对于-nlp:"<u>"之类的参数,对于C#项目,.user文件看起来像这样

<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
    <StartArguments>-nlp:"&lt;u&gt;"</StartArguments>
  </PropertyGroup>
</Project>

对于C ++项目,.user文件如下所示:

<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <LocalDebuggerCommandArguments>-nlp:"&lt;u&gt;"</LocalDebuggerCommandArguments>
    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
  </PropertyGroup>
</Project>

我们看到它们已正确转义,并且<>被转换为各自的XML实体。

Visual Studio 2012的行为不同,因此必须手动转义XML。问题可能出在MsBuild中,而不仅仅是在Visual Studio中。如上所示,编辑适当的.user文件并手动转义<>字符将在Visual Studio 2012中解决该问题。