我想在使用dotnet publish时在命令行中命名环境。我找到了这个解决方案。
dotnet publish -o site /p:EnvironmentName=Production
我以前从未见过 "/p:" 这个参数,想知道它具体是什么。我试着在谷歌上搜索,但由于语法的问题很难找到相关信息。
我特别想知道在Linux bash中是否也可以使用这个命令。
我想在使用dotnet publish时在命令行中命名环境。我找到了这个解决方案。
dotnet publish -o site /p:EnvironmentName=Production
我以前从未见过 "/p:" 这个参数,想知道它具体是什么。我试着在谷歌上搜索,但由于语法的问题很难找到相关信息。
我特别想知道在Linux bash中是否也可以使用这个命令。
基本上,它被传递给 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
参数,则可能会有完全不同的功能。dotnet
工具集(.NET Core、Mono 等)(而且我强烈建议使用-p:
版本)。但是,同样的规则适用。只要它与名为 dotnet
的应用程序一起使用,它就会在构建期间将环境名称设置为指定值。在任何其他情况下,或者在任何其他应用程序中,这种参数都可能有其他含义。这完全取决于应用程序,在 Windows 或 Linux 上都是如此。