运行 project.json 中的脚本就像在 package.json 中一样?

Any way to run the scripts in project.json just like in package.json?

所以正如标题所说,我想知道是否可以用 dotnet cli 做相当于 "npm run " 的事情?例如此片段来自我的 project.json:

{
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.1.0",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Diagnostics": "1.1.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
    "Microsoft.Extensions.Logging.Console": "1.1.0",
    "Microsoft.Extensions.Configuration": "1.1.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.1.0",
    "Microsoft.Extensions.Configuration.Json": "1.1.0",
    "Microsoft.Extensions.Configuration.CommandLine": "1.1.0",
    "Microsoft.AspNetCore.Mvc":"1.1.0",
    "Microsoft.EntityFrameworkCore": "1.1.0",
    //"MySql.Data.Core": "7.0.4-ir-191",
    //"MySql.Data.EntityFrameworkCore": "7.0.4-ir-191",
    "SapientGuardian.EntityFrameworkCore.MySql": "7.1.14",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
    "moq":  "4.6.38-alpha",
    "Microsoft.EntityFrameworkCore.Design": "1.1.0",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
    "Microsoft.EntityFrameworkCore.Relational": "1.1.0"

  },
  "scripts": {
        "migrate-identity": "dotnet ef database update --context 'ApplicationDbContext'"
},

migrate-identity是我自己添加的,这个脚本可以执行吗??

否则我想我的项目中只会有一个脚本文件夹,没什么大不了的,但仍然:)

只需在 project.json

scripts 部分添加您想要的脚本
"scripts": {
    "prepublish": [ "gulp mifiny-js", "gulp minify-css", "gulp remove-non-minified-files" ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}

我正在使用 gulp 但这与 npm

相同

Here 是完整的 project.json 架构

如您所见,脚本部分可以接收一堆对应于不同事件的不同属性。

"scripts": {
        "type": "object",
        "description": "Scripts to execute during the various stages.",
        "properties": {
            "precompile": { "$ref": "#/definitions/script" },
            "postcompile": { "$ref": "#/definitions/script" },
            "prepack": { "$ref": "#/definitions/script" },
            "postpack": { "$ref": "#/definitions/script" },
            "prepublish": { "$ref": "#/definitions/script" },
            "postpublish": { "$ref": "#/definitions/script" },
            "prerestore": { "$ref": "#/definitions/script" },
            "postrestore": { "$ref": "#/definitions/script" },
            "prepare": { "$ref": "#/definitions/script" }
        }
    },

另外我在您的评论中看到您希望手动执行它们。至少 Visual Studio 是可能的(从未尝试过 VS Code)。只需使用 Task Runner Explorer。您需要构建项目才能看到您的 npm 或 gulp 任务。

我无法使用快捷方式 (Ctrl + Alt + Backspace) 打开它,但 window 也可以通过 View -> Other Windows -> Task Runner Explorer

访问

project.json 文件不再受支持。但是,可以使用基于 XML 的 csproj 文件来处理它。

示例:

<Project Sdk="Microsoft.NET.Sdk.Web">
...
  <Target Name="MyTarget" AfterTargets="Build">
    <Exec Command="echo 'I believe you will see this message right after a successfull building'" />
  </Target>
...
</Project>

结果:

更多详情:

MS Docs: Mapping between project.json and csproj