Jam*_*lls 5 .net c# dependencies multitargeting
我正在制作一个 NuGet 包,我的 csproj 如下所示:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup Label="Globals">
<SccProjectName>SAK</SccProjectName>
<SccProvider>SAK</SccProvider>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
</PropertyGroup>
<PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard1.6;net461;net47</TargetFrameworks>
...
<PackageId>Package2</PackageId>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Package1\Package1.csproj" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net461' OR '$(TargetFramework)'=='net47'">
<Reference Include="System.Net.Http" />
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
它引用的项目如下所示:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup Label="Globals">
<SccProjectName>SAK</SccProjectName>
<SccProvider>SAK</SccProvider>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
</PropertyGroup>
<PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard1.6;net461;net47</TargetFrameworks>
<PackageId>Package1</PackageId>
...
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<NoWarn>1701;1702; CS1591</NoWarn>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)'=='netstandard1.6' OR '$(TargetFramework)'=='net461'">
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net461' OR '$(TargetFramework)'=='net47'">
<Reference Include="System.Net.Http" />
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
在Package2项目内部有以下行:
webRequestHandler.ClientCertificates.Add(certificate);
Run Code Online (Sandbox Code Playgroud)
但它不是构建在net461or中net47,而是说:
'HttpClientHandler' does not contain a definition for
'ClientCertificates' and no accessible extension method
'ClientCertificates' accepting a first argument of type
'HttpClientHandler' could be found (are you missing a using
directive or an assembly reference?)
Package2(net461),
Package2(net47)
Run Code Online (Sandbox Code Playgroud)
但我唯一改变的是从 package2 的 csproj 中删除它:
<ItemGroup Condition="'$(TargetFramework)'=='netstandard2.0'">
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="2.0.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='netstandard1.6' OR '$(TargetFramework)'=='net461' OR '$(TargetFramework)'=='net47'">
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="1.1.2" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
谁能帮助我了解如何修复它?我真的不想引入整个 NuGet 包只是为了修复这个依赖项,我认为我只是缺少一个程序集,但据我所知,它应该是System.Net.Http我应该已经引用的程序集(另一个也应该如此)它已经依赖的项目)。
小智 4
看起来这个属性从版本 4.7.1 开始可用:
请注意,如果您选择较旧的 .NET 版本,您将看到如下消息:
The requested page is not available for .NET Framework 4.7.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10760 次 |
| 最近记录: |