为什么添加项目引用会破坏依赖关系
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
我目前正在使用一个非常出色的 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