使用 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。
我在网络研究中所做的主要步骤:
已安装最新版本的 dnvm
已安装最新版本的 dnx
我已将 DNX_FEED
环境变量添加到 windows 具有 https://www.nuget.org/api/v2
值
的用户变量
我已将 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
对于您的问题,
- 请您安装的 DNX 版本与您在项目中使用的版本相匹配。您可以通过"dnvm list"命令查看安装的DNX版本,通过"dnvm use"命令更改版本。
- 当您从 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
我是 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。
我在网络研究中所做的主要步骤:
已安装最新版本的 dnvm
已安装最新版本的 dnx
我已将
DNX_FEED
环境变量添加到 windows 具有https://www.nuget.org/api/v2
值 的用户变量
我已将 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
对于您的问题,
- 请您安装的 DNX 版本与您在项目中使用的版本相匹配。您可以通过"dnvm list"命令查看安装的DNX版本,通过"dnvm use"命令更改版本。
- 当您从 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