【问题标题】:Reference dnx as a nuget package将 dnx 引用为 nuget 包
【发布时间】:2015-07-17 02:35:21
【问题描述】:

我正在尝试将 dnx 引用为 nuget 包。 为此,我在我的 project.json 中包含 dnx-clr-win-x64 和 dnx-clr-win-x86 包。

"dependencies": {
  ...
  "dnx-clr-win-x64": "1.0.0-beta4",
  "dnx-clr-win-x86": "1.0.0-beta4"
}

并将我的 web.confing 中的 runtime-path 设置设置为 packages 目录。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    ...
    <add key="runtime-path" value="../../packages" />
  </appSettings>
</configuration>

在我的包目录中,我有dnx-clr-win-x64dnx-clr-win-x86 目录以及1.0.0-beta4 子目录。

但是当我尝试运行我的应用程序时出现错误:

无法加载文件或程序集“dnx.clr.managed”或其之一 依赖项。系统找不到指定的文件。

似乎 AspNet.Loader.dll 搜索目录名为dnx-clr-win-x64.1.0.0-beta4。但是包存储在dnx-clr-win-x64/1.0.0-beta4

如果我在packages 目录中创建目录dnx-clr-win-x64.1.0.0-beta4 并将dnx-clr-win-x64/1.0.0-beta4 复制到其中,一切都会很好。

是否可以将 dnx 引用为 nuget 包?

【问题讨论】:

  • 你想达到什么目的?
  • 我希望能够不在 %USERPROFILE%\.dnx 目录中安装 dnx 以便能够在开发人员机器上运行我的应用程序。我希望另一个开发人员可以从 VCS 获取资源并构建它。现在我将 dnx 存储在 VCS 下的“runtimes”目录中,并通过“runtime-path”设置从 web.config 引用该目录。
  • 你应该编写一个构建脚本。没有'dnxASP.NEt 5 应用程序无法运行
  • 是的,我可以编写一个构建脚本或者只是将 DNX 存储在 VCS 下。但我很好奇是否可以将 DNX 引用为 nuget 包。唯一不起作用的是 nuget 将包存储为 {PackageName}\{PackageVersion} 但 AspNet.Loader.dll 查找 {PackageName}.{PackageVersion}。
  • 是的,ASP.NET 5 应用程序在没有 DNX 的情况下无法运行,但 DNX 不必位于 %USERPROFILE%\.dnx 目录中。例如,我将它存储在我的解决方案目录中。

标签: asp.net-core


【解决方案1】:

根据您的问题和您的问题,答案是否定的。您无法引用 DNX 并将其作为 NuGet 引用,因为您有引导问题:您需要 dnu(它是 dnx 的一部分)来下载 NuGet 包。

但是,您可以编写一个构建脚本,类似于我们(asp.net 团队)所做的:https://github.com/aspnet/Configuration/blob/dev/build.cmd

基本上,为了获得 dnx,您构建脚本所要做的就是:

  1. 获取 dnvm
  2. 致电dnvm install &lt;version&gt;

另外,如果你不想全局使用 dnx,你可以设置 DNX_HOME 环境变量指向不同的文件夹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多