强制NuGet在4.5项目中引用.net framework 4.0程序集?

强制NuGet在4.5项目中引用.net framework 4.0程序集?,nuget,Nuget,我的解决方案中有两个项目——一个以.net 4.0为目标,另一个以.net 4.5为目标。它们都引用相同的NuGet包,该包包含4.0和4.5二进制文件 如何让NuGet在两个项目中引用相同的版本--4.0?您可以排除您不想使用的框架文件夹(ExcludeAssets),并在项目中编辑PackageTargetFallback 在项目的csproj文件中: <PackageTargetFallback Condition="'$(TargetFramework)'=='net45'">

我的解决方案中有两个项目——一个以.net 4.0为目标,另一个以.net 4.5为目标。它们都引用相同的NuGet包,该包包含4.0和4.5二进制文件


如何让NuGet在两个项目中引用相同的版本--4.0?

您可以排除您不想使用的框架文件夹(
ExcludeAssets
),并在项目中编辑
PackageTargetFallback

在项目的csproj文件中:

<PackageTargetFallback Condition="'$(TargetFramework)'=='net45'">
    $(PackageTargetFallback);net40
</PackageTargetFallback >

$(PackageTargetFallback);网络40
引用包时:

<PackageReference Include={package-ID} Version={version} ExcludeAssets="lib/$(TargetFramework)"/>

这样,软件包就不会带来您不想要的二进制文件,并且您想要的二进制文件将是兼容的


注意:不建议使用不同的目标框架获取DLL。

您的项目是4.5,nuget软件包有4.0和4.5版本,但您希望引用4.0版本。为什么?我在同一个解决方案中还有一个项目,目标是框架4.0并引用了同一个第三方。很高兴知道。您可以通过在磁盘上的nuget package缓存中浏览到4.0版本来手动确定4.0版本的目标,但我不确定这是否是适合您的最佳解决方案…如果您1)按照所述更新配置文件2)从4.5项目中删除引用,然后3)还原nuget package,这个答案可能适用于您?还原nuget包不会修改项目文件。因此,您需要手动添加对Net40程序集的引用。