我想在使用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上,它都依赖于应用程序.

Asp.net相关问答推荐

'dotnet --version is returning您必须安装或更新.NET才能运行此应用程序.三十九岁;

Razor 页面客户端站点验证不起作用

检测 ASP.NET 中的内存泄漏

ASP.NET 如何将控件呈现为 HTML?

取消选中时 ASP.NET CheckBox 不会触发 CheckedChanged 事件

ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

如何在 ASP.NET 中使用时区?

等待本地主机,永远!

c# - 如何从列表中获取值的总和?

ASP.NET IIS - 请求何时排队?

使用 Lucene.NET 索引 .PDF、.XLS、.DOC、.PPT

.NET 核心 IdentityUser 模型中规范化邮箱和用户名的用途是什么?

如何确定服务器端 C# 上的浏览​​器窗口大小

跟踪点有什么用途?

在资源文件中使用 HTML

IIS - 无法通过 ip 地址而不是 localhost 访问页面

如何使用 encodeURIComponent() 解码在 JS 中编码的 HTML?

C# - 将图像输出到响应输出流给出 GDI+ 错误

IsMobileDevice 是如何工作的?

Appdomain 回收究竟是什么