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%
- %发布:运行时%
我正在为 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%
- %发布:运行时%