我正在尝试在 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中一个项目可以引用什么:
- 一个包。
- 源代码(字面意思是 .cs 文件),只要有 project.json。
- 一个动态链接库。
我想就这些了,但我可能会忘记。
现在这里的美妙之处在于它们的引用都是可以互换的。这意味着您添加的依赖项 "React": ""
可以引用 dll、包或源代码(如果存在冲突,源代码具有最高优先级)。请注意,将版本保留为 ""
本质上意味着“1.0”或源代码。
读到这里,您可能会想,好吧。很酷,我刚刚写了这个问题说我有冲突,为什么我的依赖关系没有正确解决?因此,首先有两种方法可以为您可以添加依赖项的有效源代码/项目提供位置。
- 暗示:尽最大努力自动找到你身边的代码
- 指定:提供 global.json 以指示在何处查找源代码。
90% 的时间你应该使用 #2 而 #1 你应该纯粹用于演示 :) 如果你能避免的话。
global.json 放在哪里? 在父文件夹中。
global.json 中有什么?您只需要有效的 json,它看起来像这样:
{
"sources": ["src", "test"]
}
有了这个 global.json,就会发现 src
和 test
文件夹中的所有源代码。
又名:
- global.json
- /src
-> A.cs
- /test
-> B.cs
此类文件夹结构的示例:https://github.com/aspnet/Mvc
希望这对您有所帮助!
关于c# - 发布同名 nuget 包时在 .net vNext 中引用本地项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28269766/