0

net461我正在开发一个我已经多目标的类库netstandard2.0

这个类库的依赖项之一是Microsoft.ApplicationInsights

当它仅针对net461时,我可以Microsoft.ApplicationInsights通过包管理器控制台或 nuget ui 添加对 (v2.4.0) 的引用,它会将自身添加为依赖项。

一旦我对 csproj 进行了多目标处理:

 <Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>net461;netstandard2.0</TargetFrameworks>
  </PropertyGroup>

</Project>

...如果我尝试添加参考,它会要求我接受许多依赖项的许可协议。当然,我这样做是妥当的。

当我将这个类库打包为 nuget 包时,我的问题就出现了。

即使我的消费应用程序以 netstandard 为目标net461,当我安装此软件包时,系统也会提示我安装所有 netstandard 依赖项——即使我的消费应用程序不以 netstandard 为目标。

有没有办法阻止我的net461目标包需要所有依赖项netstandard

4

1 回答 1

2

您是否尝试过在项目文件中使用条件来使某些依赖项目标框架特定?我有类似的听起来问题,虽然不是创建 nuget 包,这有帮助。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>net461;netstandard2.0</TargetFrameworks>
  </PropertyGroup>

  <ItemGroup Condition=" '$(TargetFramework)' == 'net461' ">
    <Reference Include="DependencyA" />
  </ItemGroup>

  <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' ">
    <PackageReference Include="DependencyB" Version="1.0.0" />
  </ItemGroup>

</Project>

另一个想法是查看现有的开源项目,看看他们是如何解决它的。虽然找到一个使用Microsoft.ApplicationInsights可能会更棘手。

于 2018-06-25T18:57:46.260 回答