为什么添加项目引用会破坏依赖关系

Why does adding Project-References break dependencies

我目前正在使用一个非常出色的 VS2015 项目模板学习 AngularJS2,我在这里找到了它:http://blog.stevensanderson.com/2016/10/04/angular2-template-for-visual-studio/。 由于我一直热衷于为学习应用程序提供一些商业价值,因此我想获取数据库的一些数据。所以我创建了新的 .Net 4.6.1 程序集,我可以在其中添加我的业务逻辑和 Entity Framework.

好吧,众所周知,我无法将 .Net Core 应用程序的项目引用添加到全栈 .NET 应用程序。为了解决这个问题,我在这里使用了指南:https://github.com/BradRem/AspNetCoreWithFrameworkLibrary/blob/master/AspNetCoreApp/,它基本上建议将 project.json 中的框架选项卡从

切换
  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

  "frameworks": {
    "net46": {

    }    
  },

好吧,这就是我麻烦的开始: 好像只能用.Net 4.6,不能用4.6.1或4.6.2,不然现有的依赖:

"Microsoft.AspNetCore.AngularServices": "1.0.0-*",
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.1",
"Microsoft.AspNetCore.Razor.Tools": {
  "version": "1.0.0-preview2-final",
  "type": "build"
},
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Configuration.CommandLine": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"Unity": "4.0.1",
"NETStandard.Library": "1.6.1",
"CommonServiceLocator": "1.3.0"

需要更新。我尝试进行这些更新,但 NuGet 以一种不再可用的方式更新了 project.json!所以我不得不重新创建一个项目并复制原来的 project.json 以使其工作。 所以,没什么大不了的,我将 Assembly-Versions 保持为 4.6,并在 project.json 中设置了框架,但随后它变得奇怪了:我可以构建 ASP.NET 核心项目,并将框架设置为 4.6 ,但是一旦我添加了程序集:

  "frameworks": {
    "net46": {
      "dependencies": {
        "xx.PES.Logics": {
          "target": "project"
        },
        "xx.PES.Model": {
          "target": "project"
        }
      }
    }    
  },

其他依赖项开始失败。例如:

Additional information: Could not load file or assembly 'Microsoft.Extensions.Logging.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

我不得不删除依赖项,手动清理(!)bin 文件夹,然后它再次工作。

TLDR:我没有做我想做的事情,而是学习 AngularJS2,我所做的只是试图让这种依赖地狱发挥作用。我还搜索了一些一般文档、可以混合的内容、标签的工作方式等,但似乎没有太多文档。 是否记录了一些最佳实践或发现,或者基本上只是早期使用 .NET-Core?

Full-Stack .NET

Agrrrrr,其命名为.Net Framework。不要再做那个moster

如果您的包有问题,我建议通过 dotnet restore 恢复,或者在解决方案探索器中单击参考 > 恢复包

接下来。如果你想添加对其他项目的引用,你需要确保使用与你在主项目中使用的相同或更低的 .Net