是否可以排除NET40以上目标框架版本的nuget依赖项?

时间:2014-05-21 23:36:22

标签: .net nuget

我有一个库,它在几个Microsoft BCL库上具有NuGet包依赖性,以便使用某些.NET 4.5功能但保持与.NET 4.0的兼容性。

以下是packages.config

的相关部分
<packages>
  <package id="Microsoft.Bcl" version="1.0.19" targetFramework="net40" />
  <package id="Microsoft.Bcl.Async" version="1.0.16" targetFramework="net40" />
  <package id="Microsoft.Bcl.Build" version="1.0.10" targetFramework="net40" />
  <package id="Microsoft.Net.Http" version="2.0.20710.0" targetFramework="net40" />
</packages>

由于.NET 4.5及更高版本中不需要这些库,因此我希望排除.NET 4.0以上版本的依赖项。

这是否可以在不维护第二个项目文件的情况下实现?感谢。

2 个答案:

答案 0 :(得分:3)

如果您只想拥有一个项目文件,可以在csproj文件中创建几个构建配置并使用msbuild条件:

<ItemGroup Condition="'$(Configuration)' == 'ReleaseNet40'">
  <Reference Include="Microsoft.Threading.Tasks">
    <HintPath>..\packages\Microsoft.Bcl.Async.1.0.16\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
  </Reference>
</ItemGroup>

<PropertyGroup Condition="'$(Configuration)' == 'ReleaseNet40'">
  <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)' == 'ReleaseNet45'">
  <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
</PropertyGroup>

答案 1 :(得分:-1)

http://docs.nuget.org/docs/reference/package-manager-console-powershell-reference

Install-Package
  -IgnoreDependencies
      Installs only this package and not its dependencies.