我使用targetframework Netstandard 2.0创建了一个私有nuget包 此包依赖于EntityFrameworkCore和EntityFramework.DbContextScope。
如果我在.Net Core项目中使用它,但在.net Framework 4.6.1项目中没有使用它,则完全正常。
包EntityFramework.DbContextScope导致问题。我看了一下nuget中的源代码,并在project.json
中看到了这个"frameworks": {
"netstandard1.3": {
"imports": [
],
"dependencies": {
"NETStandard.Library": "1.6.0",
"Microsoft.EntityFrameworkCore.Relational": "1.0.0"
},
"buildOptions": {
"define": [
"EFCore"
]
}
},
"net46": {
"dependencies": {
"EntityFramework": "6.1.3"
},
"buildOptions": {
"define": [
"EF6"
]
},
"frameworkAssemblies": {
"System.Data": "4.0.0.0"
}
},
如果我在.net framework 4.6.1项目中安装我的nuget包,它也会自动安装EntityFramework 6,但我使用EntityFrameworkCore创建了我的Nuget包。
我可以在Nuget包中进行更改,以便始终使用targetframework netstandard而不是net46安装EntityFramework.DbContextScope吗?
编辑:直到现在我才能完成这项工作的唯一方法是手动编辑.net framework 4.6.1项目的csproj文件中的hintpath。这有效,但远非理想。 <Reference Include="EntityFramework.DbContextScope, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.DbContextScope.1.0.0\lib\netstandard1.3\EntityFramework.DbContextScope.dll</HintPath>
</Reference>
答案 0 :(得分:0)
此question可能会有所帮助,因为它显示了如何基于目标框架指定依赖项。
对于您来说,它可能类似于:
<dependencies>
<group targetFramework="v4.6.1">
<dependency id="NETStandard.Library" version="1.6.0" />
<dependency id="Microsoft.EntityFrameworkCore.Relational" version="1.0.0" />
</group>
</dependencies>
如果您希望它始终安装这些版本的依赖项,而不论目标框架如何,也可以不指定目标框架:
<dependencies>
<group>
<dependency id="NETStandard.Library" version="1.6.0" />
<dependency id="Microsoft.EntityFrameworkCore.Relational" version="1.0.0" />
</group>
</dependencies>