Windows 命令行中的 '/p:' 是什么意思?

4

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

dotnet publish -o site /p:EnvironmentName=Production

我以前从未见过 "/p:" 这个参数,想知道它具体是什么。我试着在谷歌上搜索,但由于语法的问题很难找到相关信息。

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

1个回答

6

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

你可以在这里的示例中看到它

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

请注意,-p: 语法与 /p: 相同(也有 -t:/t: 等等)。前者是新的写法,而后者遵循了在 Windows 中提供命令行选项的旧“DOS”方式。多年来,许多来自微软的新型开发工具都可以接受这两种方式,但 - 是首选,因为它还可以用于 PowerShell 或 Linux,而旧的 / 无法使用(或者可以使用,但会导致一些问题或需要复杂的转义/引用)。
编辑:啊对了,我没有完全回答...-p/p 不是“Windows 命令行的东西”。在你的示例中,这是 dotnet 程序的参数,我上面描述的内容之所以正确,是因为 dotnet 之后会调用到 msbuild 程序。如果你在任何其他应用程序中看到这样的 -p//p 参数,则可能会有完全不同的功能。
最后,在 Linux 上 - 是的,你也可以在 Linux 上使用 dotnet 工具集(.NET Core、Mono 等)(而且我强烈建议使用-p: 版本)。但是,同样的规则适用。只要它与名为 dotnet 的应用程序一起使用,它就会在构建期间将环境名称设置为指定值。在任何其他情况下,或者在任何其他应用程序中,这种参数都可能有其他含义。这完全取决于应用程序,在 Windows 或 Linux 上都是如此。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接