Home > Software design >  What does '/p:' on the Windows Command Line mean
What does '/p:' on the Windows Command Line mean

Time:03-25

I want to name the environment in the command line when using dotnet publish. I found this solution

dotnet publish -o site /p:EnvironmentName=Production

I've never seen that /p: argument before and want to know what exactly that is. I tried to google it but because of its syntax it was hard to find anything.

I especially want to know if I can use this command also on a Linux machine in bash.

CodePudding user response:

Basically, it is passed to MSBuild and sets a variable/property called EnvironmentName to a value Production. Then MSBuild scripts can read that variable when performing various tasks. It's moreless the same as setting a property in <PropertyGroup> in MSBuild script (also VisualStudio's cpsroj file).

You can see it for example here

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

Note that -p: syntax is the same as /p: (also -t: and /t: and so on). The former is the new one, while the latter conforms to old "DOS" way of providing command line options in Windows. For quite a couple of years many newer developer tools from Microsoft accept both ways, but the - is preferred, as it can also be used in i.e. powershell or linux, while the older / can't (or can, but cause some problems or need complicated escaping/quoting).

EDIT: ah yes, and I didn't fully answer.. The -p or /p is NOT a "windows commandline thing". In your example, this is a parameter for the dotnet program, and what I described above is true only because dotnet happens to later call into msbuild program. if you spot such -p//p parameter anywhere else, in any other application, then it may do something completely different.

Lastly, on Linux - yes, you can use it with dotnet toolset on Linux as well (net core, mono, etc) ((and I'd strongly suggest using -p: version)). However, same rules apply. As long as it is used with this app called dotnet, it will have the effect of setting environmentname during build. In any other case, or any other app, such parameter can have other meanings. It's all app-dependent, be it on Windows, or Linux.

  • Related