我想在使用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相关问答推荐

asp.net 单选按钮分组

任何人都有解决 Internet Explorer 上剩余 n 项问题的 idea 吗?

创建一个供 ASP.NET 应用程序中的所有线程使用的静态 Regex 对象是否有效?

Anti-Forgery Token 适用于不同的基于声明的用户

有没有办法将 onclick 事件添加到 ASP.NET 标签服务器控件?

从 GUID 中删除破折号是个好主意吗?

将复选框的值传递给 asp.net mvc4 中的控制器操作

问题映射 HttpHandler --> HTTP Error 404 Not Found

IIS 中的 existingResponse="PassThrough" 是什么意思?

反序列化客户端 AJAX JSON 日期

如何从 ASP.Net 发布然后重定向到外部 URL?

使用 Ninject OWIN 中间件在 OWIN 启动中注入 UserStore

ASP.NET MVC Url Route 支持(点)

MVC3 和实体框架

IsMobileDevice 是如何工作的?

服务器标签格式不正确错误

如何解决我的 ASP.Net MVC 应用程序中的 iisreset 后发生的 AntiForgeryToken 异常?

如何在不遍历每个循环的情况下从字典对象中获取所有键(仅键)

SignalR 2.0 错误:无法加载文件或程序集 Microsoft.Owin.Security

如何将 DataTable 转换为类 Object?