Post 根据新 ASP.NET 5 项目中的配置名称构建事件

Post build event depending on configuration name in new ASP.NET 5 project

我正在为 3 台智能电视编写一个统一的项目。我还在 Visual Studio 中创建了 3 个配置。现在我想根据所选配置执行一些 CLI 脚本。

问题出在新的 ASP.NET 5 项目中我没有 post 构建事件的编辑器。

我知道我必须在 project.json 中执行此操作。我发现的是:

  "scripts": {
    "postbuild": ""
  }

但是使用这个我不能为不同的配置创建不同的 CLI 脚本。

我还发现:

  "configurations": {
  },

而且我想这可能就是我想要的,但是...如何使用它? Intellisense 在这里没有任何功能,而且我在网上搜索时也不走运...

[编辑]

也许我应该试试 .xproj?

我对此进行了一些调查,但并没有真正取得任何好的结果。

脚本中公开了一些项目变量。不幸的是,这些是 very limited:

  • %project:Name%给你项目名
  • %project:Directory%给你项目目录
  • %project:Version% 给你项目版本

因此无法访问构建配置或此处的环境。

project.json 中的 configurations 选项也仅限于构建配置,并且只允许在那里声明编译选项,所以这也不起作用。

不幸的是,似乎也没有其他方法可以解决这个问题。至少不是现在。我会考虑自己向 DNX 发送拉取请求以添加一些可以使用的额外项目变量,但目前,将时间投入到 DNX 中并没有任何意义:毕竟它已被 dotnet CLI 取代。我们将看看它是否具有访问环境的功能——如果没有,我可能最终会提交一个拉取请求来添加此功能。但在我们到达那里之前,恐怕没有解决办法。

您需要构建一个主脚本,该脚本使用可用的上下文和环境变量进行切换,运行 您选择的其他脚本。

除了变量列表Here for compile, you also get these for publish related scripts and then these are available everywhere, as are environment variables returned by Environment.GetEnvironmentVariable, which can be seen here

下图显示了 VS2015 Update 3 RTM 的智能感知,但它具有误导性,因为您会根据所使用的脚本块获得其他智能感知:

因此,可用于控制脚本流程的上下文变量的完整列表是:

每个脚本块:

  • %项目:目录%
  • %项目:名称%
  • %项目:版本%

编译具体:

  • %编译:TargetFramework%
  • %编译:FullTargetFramework%
  • %编译:配置%
  • %编译:输出文件%
  • %编译:OutputDir%
  • %编译:ResponseFile%
  • %compile:RuntimeOutputDir%(只有有运行时间输出才可用)
  • %compile:RuntimeIdentifier%(仅在有运行时间输出时可用)
  • %comiple:CompilerExitCode%(仅在编译后脚本块中可用)

具体发布:

  • %发布:项目路径%
  • %发布:配置%
  • %发布:OutputPath%
  • %发布:TargetFramework%
  • %发布:FullTargetFramework%
  • %发布:运行时%