使用 Msbuild 构建 ASP 核心 (ASP 5) 项目

Build ASP Core (ASP 5) Project with Msbuild

我是 MSBuild 和 ASP Core 的超级新手,我在使用 ASP Core (ASP 5) 配置 MSBuild 时遇到问题。

我的最后一个错误是:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DNX\Microsoft.DNX.targets (126): The Dnx Runtime package needs to be installed.

但是安装了 Dnx。

我在网络研究中所做的主要步骤:

  1. 已安装最新版本的 dnvm

  2. 已安装最新版本的 dnx

  3. 我已将 DNX_FEED 环境变量添加到 windows 具有 https://www.nuget.org/api/v2

  4. 的用户变量
  5. 我已将 windows 用户变量中的 PATH 环境变量修改为 C:\Users\OAG\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin;C:\Program Files (x86)\MSBuild.0\Bin;C:\Users\OAG\.dnx\bin

顺便说一下,对于 msbuild 操作,我的 tfs 版本是 2013。

确保您已更新 global.json 以指向较新的运行时。

{
  "projects": [ "src", "test" ],
  "sdk": {
    "version": "1.0.0-rc1-xxxx",
    "runtime": "coreclr"
  }
}

这里有一个类似的问题:https://github.com/aspnet/Tooling/issues/71

此外,下面的文章解释了您需要添加哪些 powershell 脚本以及如何配置您的构建。并检查link中的以下步骤是否解决了问题。 Build and Deploy your ASP.NET 5 Application to an Azure Web App

对于您的问题,

  1. 请您安装的 DNX 版本与您在项目中使用的版本相匹配。您可以通过"dnvm list"命令查看安装的DNX版本,通过"dnvm use"命令更改版本。
  2. 当您从 DNVM 安装或使用 DNX 时,添加 -g 或 -global 参数以确保所有用户都可以使用 DNX。

并且当您从 dnvm 安装 dnx 时,DNX bin 已自动添加到用户 PATH 环境变量中。所以你不需要手动添加它。

关于 DNVM 的说明:Version Manager

我的问题终于解决了

首先感谢您的回答指导我得出结果

我使用了Teamcity而不是TFS Msbuild,但仍然存在dnx未安装的相同错误。

对我来说有趣的是,我已经在几台计算机上进行了检查,其中一些计算机一切正常,而在一些计算机上仍然存在另一个错误。

在某些情况下,我遇到了这个错误,但在添加新的 Agent 进行构建后,错误得到解决。

毕竟有了这个 link Specify that MSBuild v14 use CoreClr RC1 for build 并将这行代码添加到 命令行参数 :

/verbosity:minimal /p:RuntimeToolingDirectory="C:\Users\Administrator.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1"

那个错误消失了,找不到包的错误运行 dnu restore raised 这似乎很容易解决,但这并不容易,因为包已经存在于我的 dnx 文件夹中,并且错误地提到包不存在(发生了什么?)。

在 Microsoft link Build and Deploy your ASP.NET 5 Application to an Azure Web App 的帮助下,Patrick 还提到我在主构建操作之前添加了一个 PowerShell 级别并添加了 Prebuild.ps1 文件(存在于 link) ,解决了 dnu 恢复问题,现在 命令行参数 在主构建操作中可以为空。

但是这是怎么回事?

我发现在构建操作中(在某些情况下我不知道)构建代理正在为构建和使用它自己的 dnx 项目创建单独的区域,在我的例子中构建代理在这个文件夹中工作

C:\Windows\SysWOW64\config\systemprofile\

里面有自己的运行times和packages,终于明白是怎么回事了,dnx 运行time is not exist error是什么原因运行time version doesn't exist in the area and dnu restore problem is because it's looking in its own area not user dnx packages.

顺便说一下,我的目标 OS 是 windows server 2008 R2