Das*_*oli 4 windows asp.net shell command-line
我想在使用 dotnetpublish 时在命令行中命名环境。我找到了这个解决方案
dotnet publish -o site /p:EnvironmentName=Production
Run Code Online (Sandbox Code Playgroud)
我以前从未见过 /p: 参数,想知道它到底是什么。我试图用谷歌搜索它,但由于它的语法,很难找到任何东西。
我特别想知道我是否也可以在 Linux 机器上的 bash 中使用这个命令。
基本上,它被传递到 MSBuild 并设置一个名为EnvironmentNamevalue 的变量/属性Production。然后,MSBuild 脚本可以在执行各种任务时读取该变量。<PropertyGroup>它与在 MSBuild 脚本(也是 VisualStudio 的 cpsroj 文件)中设置属性更相似。
例如你可以在这里看到它
msbuild buildapp.csproj -t:HelloWorld -p:Configuration=Release
Run Code Online (Sandbox Code Playgroud)
请注意,语法与(also and and so on)-p:相同。前者是新的,而后者符合旧的“DOS”方式,在Windows中提供命令行选项。多年来,许多来自 Microsoft 的较新的开发工具都接受这两种方式,但首选是,因为它也可以在 ie powershell 或 linux 中使用,而较旧的工具则可以在 ie powershell 或 linux 中使用。/p:-t:/t:-/不能(或可以,但会导致一些问题或需要复杂的转义/引用)。
编辑:啊是的,我没有完全回答.. or-p不是/p“windows 命令行的东西”。在您的示例中,这是程序的参数dotnet,我上面描述的内容是正确的,只是因为dotnet稍后会调用msbuild程序。如果你发现这样的-p//p在任何其他应用程序中的任何其他地方
最后,在 Linux 上 - 是的,您也可以将它与dotnetLinux 上的工具集一起使用(net core、mono 等)((我强烈建议使用-p:版本))。但是,同样的规则适用。只要和这个叫 的应用程序一起使用dotnet,就会起到构建时设置环境名称的效果。在任何其他情况下,或任何其他应用程序,此类参数可以具有其他含义。无论是在 Windows 还是 Linux 上,这一切都依赖于应用程序。