project.json解决方案项目引用

8

我正在使用ASP.NET 5 (vNext)进行开发,想要在我的数据库项目中添加对project.json文件的引用。下面是代码:

project.json

{
    "webroot": "wwwroot",
    "version": "1.0.0-*",
    "exclude": [
        "wwwroot"
    ],
    "packExclude": [
        "**.kproj",
        "**.user",
        "**.vspscc"
    ],
    "dependencies": {
        "Microsoft.AspNet.Server.IIS": "1.0.0-beta1",
        "EntityFramework.Commands": "7.0.0-beta1",
        "EntityFramework": "7.0.0-beta1",
        "EntityFramework.SqlServer": "7.0.0-beta1",
        "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta1",
        "Microsoft.AspNet.Security.Cookies": "1.0.0-beta1",
        "DataManagement": ""    <----- THIS IS MY PROJECT WITHIN SOLUTION
    },
    "frameworks": {
        "aspnet50": { },
        "aspnetcore50": { }
    }
}

DataManagement项目只是一个类库,然而我尝试使用ASP.NET 5类库。两种类型的项目都失败了,我在Visual Studio中看到以下内容:
解决方案视图
项目正在正常构建并生成(当然)Datamanagement.dll,但是Web项目找不到此库。
确切地说,下面是两个项目的目标版本:
DataManagement: KRE-CLR-x86.1.0.0-rc1-10846
Web:            KRE-CLR-x86.1.0.0-rc1-10846

请确保您的库针对相同的 .NET Framework 版本。 - DLeh
我更新了问题。目标版本仍然是相同的。 - Fka
你尝试指定程序集版本了吗?可能是 1.0.0.0"DataManagement": "1.0.0.0" - DLeh
@DLeh - 我尝试了两种方法 :/ - Fka
在同一个解决方案中,它位于 Data/DataManagement 下。由于只有一个空类,所以编译是正确的。 - Fka
显示剩余2条评论
2个回答

12

默认情况下,两个项目需要有相同的父文件夹。

例如,这个模式是可行的:

  • /mysolution/project1/project.json
  • /mysolution/project2/project.json

但这个则不行:

  • /mysolution/sub1/project1/project.json
  • /mysolution/sub2/project2/project.json

通常最简单的方法是确保两个项目拥有相同的公共父文件夹。

但如果不能这样做,你可以在“solution”文件夹中添加一个global.json文件,并指示源代码的位置:

{
    "sources": ["sub1", "sub2"]
}

我会尝试并告诉您结果。感谢您的努力。 - Fka
工作顺利,谢谢 :) 我之前并没有意识到 global.json 的存在,因为我创建了一个空的 vNext 项目 - 这意味着没有 src 文件夹和 global.json 文件。 - Fka

1

你需要指定一个版本。尝试:

"DataManagement": "1.0.0-*"    

我尝试了使用显式版本号和在末尾加上*。我认为问题出在我的本地环境上,因为今天当我打开解决方案时,所有的引用、命名空间、方法——简而言之,所有东西都是红色的。重启Visual Studio也没有帮助。 - Fka
你也可以直接使用“*”,这样你就不必记得在将来更新它。 - Drew Noakes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接