c# - 发布同名 nuget 包时在 .net vNext 中引用本地项目

标签 c# asp.net asp.net-core

我正在尝试在 VS 2015 中使用新的 vNext 项目类型构建一个包。

我想在同一个解决方案(不是 vNext)中引用一个项目,但它试图为该项目找到一个 nuget 包,而不是直接引用它。

我做错了什么?

{
    "version": "1.0.0-*",
    "dependencies": {
        "Microsoft.AspNet.Mvc": "6.0.0.0-beta2"
    },
    "frameworks": {
        "aspnet50": {
            "dependencies": {
                "React": "" //it cant find a package for this even though I have a project named this in my solution
            }
        },
        "aspnetcore50": {
            "dependencies": {
                "System.Runtime": "4.0.20-beta-22231"
            }
        }
    }
}

项目结构:

Solution Folder
 - src 
   - global.json {"sources": [""]} 
   - React (project folder)
   - My Library (project folder)
 - bin
   - Debug
     - React

最佳答案

简答:您需要将 net45 配置添加到您的 project.json 中,然后您可以在其中添加 React 依赖项(假设它是一个 net45 二进制文件)。

注意:我更新了简答以反射(reflect)添加到问题中的新信息。下面的长答案纯粹是提供信息。

依赖解析信息: 需要注意的重要一点是,在 vNext (ASP.NET 5) 中,Visual Studio 不是必需的。因此,我们不能从“它在我的解决方案中”的角度来考虑事情,因为这是一个 Visual Studio 概念,所有内容都是为在 Visual Studio 之外工作而设计的。

那么,先说说在vNext中一个项目可以引用什么:

  1. 一个包。
  2. 源代码(字面意思是 .cs 文件),只要有 project.json。
  3. 一个动态链接库。

我想就这些了,但我可能会忘记。

现在这里的美妙之处在于它们的引用都是可以互换的。这意味着您添加的依赖项 "React": "" 可以引用 dll、包或源代码(如果存在冲突,源代码具有最高优先级)。请注意,将版本保留为 "" 本质上意味着“1.0”或源代码。

读到这里,您可能会想,好吧。很酷,我刚刚写了这个问题说我有冲突,为什么我的依赖关系没有正确解决?因此,首先有两种方法可以为您可以添加依赖项的有效源代码/项目提供位置。

  1. 暗示:尽最大努力自动找到你身边的代码
  2. 指定:提供 global.json 以指示在何处查找源代码。

90% 的时间你应该使用 #2 而 #1 你应该纯粹用于演示 :) 如果你能避免的话。

global.json 放在哪里? 在父文件夹中。
global.json 中有什么?您只需要有效的 json,它看起来像这样:

{
    "sources": ["src", "test"]
}

有了这个 global.json,就会发现 srctest 文件夹中的所有源代码。

又名:

- global.json
- /src
-> A.cs
- /test
-> B.cs

此类文件夹结构的示例:https://github.com/aspnet/Mvc

希望这对您有所帮助!

关于c# - 发布同名 nuget 包时在 .net vNext 中引用本地项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28269766/

相关文章:

c# - 用于类型 'MenuItem' 的样式不能应用于类型 'Separator'

c# - 我可以在 Visual Studio 解决方案中列出所有*不可用*项目吗?

ASP.Net 2.0 VB 网站项目 "Type ' 异常'未定义”

asp.net-core - 服务器地址中无法识别的方案

c# - 为什么我的 foreach 循环只循环一次,即使有 3 个项目?

asp.net - 使用 javascript 动态创建表单有什么注意事项吗?

asp.net - SignalR WebSockets 在本地工作但不在服务器上

C# ASP.NET Core [Inject] 依赖注入(inject)的属性用法

c# - 从 ASP.NET Core 中的 ExceptionFilterAttribute 访问 Controller

c# - 程序启动时如何启动mysql数据库?