我想在使用dotnet publish时在命令行中命名环境.我找到了这个解决方案
dotnet publish -o site /p:EnvironmentName=Production
我以前从未见过/p:争论,我想知道那到底是什么.我试图用谷歌搜索它,但由于它的语法,很难找到任何东西.
我特别想知道我是否也可以在bash的Linux机器上使用这个命令.
我想在使用dotnet publish时在命令行中命名环境.我找到了这个解决方案
dotnet publish -o site /p:EnvironmentName=Production
我以前从未见过/p:争论,我想知道那到底是什么.我试图用谷歌搜索它,但由于它的语法,很难找到任何东西.
我特别想知道我是否也可以在bash的Linux机器上使用这个命令.
基本上,它被传递给MSBuild,并将名为EnvironmentName
的变量/属性设置为值Production
.然后,MSBuild脚本可以在执行各种任务时读取该变量.这与在MSBuild脚本(也是VisualStudio的cpsroj文件)中的<PropertyGroup>
中设置属性基本相同.
你可以看到for example here
msbuild buildapp.csproj -t:HelloWorld -p:Configuration=Release
请注意,-p:
语法与/p:
相同(也包括-t:
和/t:
等).前者是新的,而后者符合旧的"DOS"方式,即在Windows中提供命令行选项.在相当长的几年里,微软的许多新开发工具都接受这两种方式,但-
是首选,因为它也可以用于powershell或linux,而旧的/
不能(或可以,但会导致一些问题或需要复杂的转义/引用).
编辑:啊,是的,我没有完全回答..-p
或/p
不是"windows命令行".在你们的例子中,这是dotnet
程序的一个参数,我上面描述的是正确的,只是因为dotnet
后来碰巧调用了msbuild
程序.如果在任何其他应用程序中,在任何其他地方发现这样的-p
//p
参数,那么它可能会做一些完全不同的事情.
最后,在Linux上——是的,你也可以在Linux上使用dotnet
个工具集(net core、mono等)(我强烈建议使用-p:
版本).然而,同样的规则也适用.只要它与这个名为dotnet
的应用程序一起使用,它就可以在构建期间设置environmentname.在任何其他情况下,或任何其他应用程序中,此类参数可能具有其他含义.无论是在Windows还是Linux上,它都依赖于应用程序.