C# 当发布同名的nuget包时,在.net vNext中引用本地项目

C# 当发布同名的nuget包时,在.net vNext中引用本地项目,c#,asp.net,asp.net-core,C#,Asp.net,Asp.net Core,我正在尝试在VS2015中使用新的vNext项目类型构建一个包 我想在同一个解决方案中引用一个项目(不是vNext),但它试图为该项目找到一个nuget包,而不是直接引用它 我做错了什么 { "version": "1.0.0-*", "dependencies": { "Microsoft.AspNet.Mvc": "6.0.0.0-beta2" }, "frameworks": { "aspnet50": {

我正在尝试在VS2015中使用新的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

如果您使用VS2015 CTP,则可以通过检查项目属性/构建部分中的生成生成输出来自动创建nuget包。nuget包将在解决方案的工件文件夹中创建,您需要手动将这些工件推送到nuget服务器

关于你可以添加什么样的项目作为参考是有点棘手的。这就是我所做的。我使用vs2013创建了5个项目2个,使用vs2015创建了3个。最后一个是用于测试项目参考的web项目

只允许C#项目作为参考,目前不支持VB项目。假设您有一个2013年创建的类库,您可以将它们添加到VS2015解决方案中,而无需升级(到目前为止),然后您可以添加这些类库作为对其他vNext项目的引用,但不会在aspnet5core中工作


简短回答:您需要将
net45
配置添加到
project.json
中,然后添加
React
依赖项(假设它是
net45
二进制)

注意:我已经更新了简短答案,以反映问题中添加的新信息。下面的详细答案纯粹是信息性的

依赖项解析信息: 需要注意的一点是,在vNext(ASP.NET5)中,不需要Visual Studio。因此,我们不能用“它在我的解决方案中”来考虑问题,因为这是一个VisualStudio概念,所有东西都设计为在VisualStudio之外工作

因此,让我们首先谈谈在vNext中可以从项目中引用什么:

  • 包裹
  • 源代码(字面上是.cs文件),只要有project.json
  • 动态链接库
  • 我想这就是一切,但我可能会忘记

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

    现在读了这么多,你可能会想,好吧,酷,我刚刚写了这篇文章,说我有冲突,为什么我的依赖项不能正确解决?因此,首先有两种方法可以为有效的源代码/项目提供位置,您可以向其中添加依赖项

  • 暗示:尽最大努力自动找到你周围的代码
  • 指定:提供global.json以指示在何处查找源代码
  • 90%的时间你应该使用#2,其中#1你应该纯粹用于演示:)如果你可以避免的话

    global.json放在哪里?在父文件夹中。
    全局.json中包含什么?您只需要有效的json,它可以如下所示:

    {
        "sources": ["src", "test"]
    }
    
    使用这个global.json,将发现
    src
    test
    文件夹中的所有源代码

    又名:

    此类文件夹结构的示例:


    希望这有帮助

    我的猜测是,您需要为本地程序集创建一个nuGet包。vNext@dbugger所以你不能引用一个本地项目而不把它转换成一个nuget包?当然不是这样的?我以为你在谈论创建一个包,但从一些阅读资料来看,似乎nuGet方法是受欢迎的。如果你使用的是Visual Studio 2015 CTP5,那么它将允许你在相同的解决方案中添加项目引用,即使它不是vnext类型。这非常有帮助,我更了解global.json的工作原理。然而,我仍然无法得到我的工作证明。我认为这可能与垃圾箱文件夹在一个奇怪的地方有关。我在我的问题中添加了文件夹结构,并尝试将源指向bin文件夹,但似乎没有任何想法(例如../bin/debug)?因此需要注意的是,
    React
    希望是一个与net45等效的项目,因此只能在project.json中的net45节点中使用。现在看到您的项目结构,您不需要global.json(它会自动找到您的项目)。更新答案以反映新的细节。
    - global.json
    - /src
    -> A.cs
    - /test
    -> B.cs