代码之家  ›  专栏  ›  技术社区  ›  DasEvoli

Windows命令行上的“/p:”是什么意思

  •  2
  • DasEvoli  · 技术社区  · 3 年前

    我想在使用dotnet publish时在命令行中命名环境。我找到了这个解决方案

    dotnet publish -o site /p:EnvironmentName=Production
    

    我以前从未见过/p:争论,我想知道那到底是什么。我试图用谷歌搜索它,但由于它的语法,很难找到任何东西。

    我特别想知道我是否也可以在bash的Linux机器上使用这个命令。

    1 回复  |  直到 3 年前
        1
  •  4
  •   quetzalcoatl    3 年前

    基本上,它被传递给MSBuild并设置一个名为 EnvironmentName 有价值 Production 。然后,MSBuild脚本可以在执行各种任务时读取该变量。这与在中设置属性基本相同 <PropertyGroup> 在MSBuild脚本中(也是VisualStudio的cpsroj文件)。

    你可以看到 for example here

    msbuild buildapp.csproj -t:HelloWorld -p:Configuration=Release
    

    注意 -p: 语法与 /p: (还有 -t: /t: 等等)。前者是新的,而后者符合旧的“DOS”方式,即在Windows中提供命令行选项。在相当长的几年里,微软的许多新开发工具都接受这两种方式,但是 - 是首选,因为它也可以在powershell或linux中使用,而旧版本 / 不能(或可以,但会导致一些问题或需要复杂的转义/引用)。

    编辑:啊,是的,我没有完全回答。。这个 -p /p 不是“windows命令行的东西”。在您的示例中,这是 dotnet 我上面描述的是真实的,因为 网络 后来碰巧打电话进来 msbuild 程序如果你发现了 -p / /p 参数,则它可能会执行完全不同的操作。

    最后,在Linux上——是的,您可以将其与 网络 Linux上的工具集(NetCore、mono等)(我强烈建议使用 -p: 版本)。然而,同样的规则也适用。只要与这个名为 网络 ,它将具有在生成期间设置environmentname的效果。在任何其他情况下,或任何其他应用程序中,此类参数可能具有其他含义。无论是在Windows还是Linux上,它都依赖于应用程序。