gpt4 book ai didi

.net - 如何在 .csproj 文件中为 PackageReference 指定 targetFramework?

转载 作者:行者123 更新时间:2023-12-03 14:44:11 29 4
gpt4 key购买 nike

从 VS2017 和 NuGet 依赖项的新 PackageReference 开始,我遇到了问题。

起初我很兴奋不再需要这个额外的packages.config 文件。但现在我有点失望:

我的一些程序集以框架 4.0 为目标,因为它们也必须能够在 XP 下运行。其他的没有这个限制,目标框架4.6.1。这工作正常,因为没有 4.0 程序集依赖于 4.6.1 程序集。只有另一个方向。

大多数程序集使用 NLog NuGet 包。但是,当使用新的 PackageReference 选项指定 NuGet 包时,面向框架 4.6.1 的程序集将始终安装面向 .NET 4.5 的 NLog 变体。从那时起,无法再构建依赖于 .NET 4.0 程序集的其他程序集:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(1987,5): warning MSB3275: The primary reference "Tools, Version=2.0.0.9180, Culture=neutral, processorArchitecture=MSIL" could not be resolved because it has an indirect dependency on the assembly "NLog, Version=3.2.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c" which was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0". [D:\Work\4.8.0_PackageReference\Test\TestApp.csproj]



我想为所有项目使用 NLog for .NET 4.0。如果没有packages.config,这真的不可能吗?可以使用 targetFramework 属性指定所需的框架。但是我找不到任何方法来使用新的 PackageReference 方法来做到这一点。真是难以置信……

最佳答案

<ItemGroup>
<!-- ... -->
<PackageReference Include="Newtonsoft.Json" Version="9.0.1" Condition="'$(TargetFramework)' == 'net452'" />
<!-- ... -->
</ItemGroup>
MS 文档链接: https://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files#adding-a-packagereference-condition

关于.net - 如何在 .csproj 文件中为 PackageReference 指定 targetFramework?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46471471/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com