Skip to content

Ignore DotNET 5.0 framework? #1066

Closed
Closed

Description

@ctaggart

All my projects are currently targeting .NET Framework 4.x. The number of transitive dependencies more than doubles in my projects if I begin references an updated library that supports DotNET 5.0.

For example, trying out a newer FsCheck, pulls in xunit.extensibility.execution, which pulls in the .NET 5.x world:
https://www.nuget.org/packages/xunit.extensibility.execution/2.1.0-rc1-build3168

It would be awesome if I could specify the frameworks that I cared about.

image

Activity

  1. forki commented on Sep 15, 2015

    @forki
    Member

    Yes ms is starting to ship the framework as nuget packages. What do you
    propose?
    On Sep 15, 2015 10:55 PM, "Cameron Taggart" notifications@github.com
    wrote:

    All my projects are currently targeting .NET Framework 4.x. The number of
    transitive dependencies more than doubles in my projects if I begin
    references an updated library that supports DotNET 5.0.

    For example, trying out a newer FsCheck, pulls in
    xunit.extensibility.execution, which pulls in the .NET 5.x world:

    https://www.nuget.org/packages/xunit.extensibility.execution/2.1.0-rc1-build3168

    [image: image]
    https://cloud.githubusercontent.com/assets/80104/9889812/2c85c058-5bb1-11e5-8dc8-6d8d7ade80db.png

    —
    Reply to this email directly or view it on GitHub
    #1066.

  2. ctaggart commented on Sep 15, 2015

    @ctaggart
    ContributorAuthor

    I don't know yet. I just don't want all of .NET 5 Framework downloaded if I am not using it.

  3. forki commented on Sep 16, 2015

    @forki
    Member
  4. WebDucer commented on Sep 17, 2015

    @WebDucer

    Framework restrictions doesn't work. Have the same problem with FluentAssertions 4.x library.

    nuget FluentAssertions framework: net40, net45

    GROUP UnitTests
    COPY-LOCAL: TRUE
    NUGET
      remote: https://www.nuget.org/api/v2
      specs:
        CommonServiceLocator (1.3)
        EntityFramework (6.1.3)
        FluentAssertions (4.0.0) - framework: net40, net45
          System.Collections (>= 4.0.10)
          System.Diagnostics.Debug (>= 4.0.10)
          System.Globalization (>= 4.0.10)
          System.Linq (>= 4.0.0)
          System.Linq.Expressions (>= 4.0.10)
          System.ObjectModel (>= 4.0.10)
          System.Reflection (>= 4.0.10)
          System.Reflection.Extensions (>= 4.0.0)
          System.Reflection.Primitives (>= 4.0.0)
          System.Reflection.TypeExtensions (>= 4.0.0)
          System.Runtime (>= 4.0.20)
          System.Runtime.Extensions (>= 4.0.10)
          System.Text.RegularExpressions (>= 4.0.10)
          System.Threading (>= 4.0.10)
          System.Threading.Tasks (>= 4.0.10)
          System.Xml.XDocument (>= 4.0.10)
        Moq (4.2.1507.0118)
        MvvmLightLibs (5.2.0.0)
          CommonServiceLocator (>= 1.0) - framework: sl40, >= net35 < net40
          CommonServiceLocator (>= 1.3)
        Newtonsoft.Json (7.0.1)
        NUnit (2.6.4)
        System.Collections (4.0.10)
          System.Diagnostics.Debug (>= 4.0.0) - framework: dnxcore50
          System.Resources.ResourceManager (>= 4.0.0) - framework: dnxcore50
          System.Runtime (>= 4.0.0)
          System.Runtime (>= 4.0.20) - framework: dnxcore50
          System.Runtime.Extensions (>= 4.0.0) - framework: dnxcore50
          System.Threading (>= 4.0.0) - framework: dnxcore50
        System.Data.SQLite (1.0.98.1) - content: none
          System.Data.SQLite.Core (>= 1.0.98.1) - framework: net20, net40, net45, >= net451, >= net46
          System.Data.SQLite.EF6 (>= 1.0.98.1) - framework: net40, net45, >= net451, >= net46
          System.Data.SQLite.Linq (>= 1.0.98.1) - framework: net20, net40, net45, >= net451, >= net46
        System.Data.SQLite.Core (1.0.98.1) - content: none, framework: net20, net40, net45, >= net451, >= net46
        System.Data.SQLite.EF6 (1.0.98.1) - content: none, framework: net40, net45, >= net451, >= net46
          EntityFramework (>= 6.0.0.0) - framework: net40, net45, >= net451, >= net46
        System.Data.SQLite.Linq (1.0.98.1) - content: none, framework: net20, net40, net45, >= net451, >= net46
        System.Diagnostics.Contracts (4.0.0) - framework: dnxcore50
          System.Runtime (>= 4.0.0)
        System.Diagnostics.Debug (4.0.10)
          System.Runtime (>= 4.0.0)
        System.Globalization (4.0.10)
          System.Runtime (>= 4.0.0)
        System.IO (4.0.10)
          System.Globalization (>= 4.0.0) - framework: dnxcore50
          System.Runtime (>= 4.0.20)
          System.Text.Encoding (>= 4.0.0)
          System.Text.Encoding (>= 4.0.10) - framework: dnxcore50
          System.Text.Encoding.Extensions (>= 4.0.0) - framework: dnxcore50
          System.Threading (>= 4.0.0) - framework: dnxcore50
          System.Threading.Tasks (>= 4.0.0)
        System.IO.FileSystem (4.0.0)
          System.Collections (>= 4.0.10) - framework: dnxcore50
          System.Diagnostics.Debug (>= 4.0.10) - framework: dnxcore50
          System.IO (>= 4.0.0)
          System.IO (>= 4.0.10) - framework: dnxcore50
          System.IO.FileSystem.Primitives (>= 4.0.0)
          System.Resources.ResourceManager (>= 4.0.0) - framework: dnxcore50
          System.Runtime (>= 4.0.0)
          System.Runtime (>= 4.0.20) - framework: dnxcore50
          System.Runtime.Extensions (>= 4.0.10) - framework: dnxcore50
          System.Runtime.Handles (>= 4.0.0)
          System.Runtime.InteropServices (>= 4.0.20) - framework: dnxcore50
          System.Runtime.WindowsRuntime (>= 4.0.0) - framework: dnxcore50
          System.Text.Encoding (>= 4.0.0)
          System.Text.Encoding (>= 4.0.10) - framework: dnxcore50
          System.Text.Encoding.Extensions (>= 4.0.10) - framework: dnxcore50
          System.Threading (>= 4.0.10) - framework: dnxcore50
          System.Threading.Overlapped (>= 4.0.0) - framework: dnxcore50
          System.Threading.Tasks (>= 4.0.0)
          System.Threading.Tasks (>= 4.0.10) - framework: dnxcore50
        System.IO.FileSystem.Primitives (4.0.0)
          System.Runtime (>= 4.0.20)
        System.Linq (4.0.0)
          System.Collections (>= 4.0.10)
          System.Diagnostics.Debug (>= 4.0.10)
          System.Resources.ResourceManager (>= 4.0.0)
          System.Runtime (>= 4.0.20)
          System.Runtime.Extensions (>= 4.0.10)
        System.Linq.Expressions (4.0.10)
          System.Collections (>= 4.0.0) - framework: dnxcore50
          System.Diagnostics.Debug (>= 4.0.0) - framework: dnxcore50
          System.Globalization (>= 4.0.0) - framework: dnxcore50
          System.IO (>= 4.0.0) - framework: dnxcore50
          System.Linq (>= 4.0.0) - framework: dnxcore50
          System.ObjectModel (>= 4.0.0) - framework: dnxcore50
          System.Reflection (>= 4.0.0)
          System.Reflection.Emit (>= 4.0.0) - framework: dnxcore50
          System.Reflection.Extensions (>= 4.0.0) - framework: dnxcore50
          System.Reflection.Primitives (>= 4.0.0) - framework: dnxcore50
          System.Reflection.TypeExtensions (>= 4.0.0) - framework: dnxcore50
          System.Resources.ResourceManager (>= 4.0.0) - framework: dnxcore50
          System.Runtime (>= 4.0.0)
          System.Runtime (>= 4.0.20) - framework: dnxcore50
          System.Runtime.Extensions (>= 4.0.0) - framework: dnxcore50
          System.Threading (>= 4.0.0) - framework: dnxcore50
        System.ObjectModel (4.0.10)
          System.Collections (>= 4.0.10)
          System.Diagnostics.Debug (>= 4.0.10)
          System.Resources.ResourceManager (>= 4.0.0)
          System.Runtime (>= 4.0.20)
          System.Threading (>= 4.0.10)
        System.Private.Uri (4.0.0) - framework: dnxcore50
        System.Reflection (4.0.10)
          System.IO (>= 4.0.0)
          System.Reflection.Primitives (>= 4.0.0)
          System.Runtime (>= 4.0.20)
        System.Reflection.Emit (4.0.0) - framework: dnxcore50
          System.IO (>= 4.0.0)
          System.Reflection (>= 4.0.0)
          System.Reflection.Emit.ILGeneration (>= 4.0.0)
          System.Reflection.Primitives (>= 4.0.0)
          System.Runtime (>= 4.0.0)
        System.Reflection.Emit.ILGeneration (4.0.0)
          System.Reflection (>= 4.0.0)
          System.Reflection.Primitives (>= 4.0.0)
          System.Runtime (>= 4.0.0)
        System.Reflection.Extensions (4.0.0)
          System.Diagnostics.Debug (>= 4.0.10) - framework: dnxcore50
          System.Reflection (>= 4.0.0)
          System.Reflection (>= 4.0.10) - framework: dnxcore50
          System.Reflection.Primitives (>= 4.0.0) - framework: dnxcore50
          System.Reflection.TypeExtensions (>= 4.0.0) - framework: dnxcore50
          System.Resources.ResourceManager (>= 4.0.0) - framework: dnxcore50
          System.Runtime (>= 4.0.0)
          System.Runtime (>= 4.0.20) - framework: dnxcore50
          System.Runtime.Extensions (>= 4.0.10) - framework: dnxcore50
        System.Reflection.Primitives (4.0.0)
          System.Runtime (>= 4.0.0)
          System.Threading (>= 4.0.0) - framework: dnxcore50
        System.Reflection.TypeExtensions (4.0.0)
          System.Diagnostics.Contracts (>= 4.0.0) - framework: dnxcore50
          System.Diagnostics.Debug (>= 4.0.10) - framework: dnxcore50
          System.Linq (>= 4.0.0) - framework: dnxcore50
          System.Reflection (>= 4.0.0)
          System.Reflection (>= 4.0.10) - framework: dnxcore50
          System.Reflection.Primitives (>= 4.0.0) - framework: dnxcore50
          System.Resources.ResourceManager (>= 4.0.0) - framework: dnxcore50
          System.Runtime (>= 4.0.0)
          System.Runtime (>= 4.0.20) - framework: dnxcore50
          System.Runtime.Extensions (>= 4.0.10) - framework: dnxcore50
        System.Resources.ResourceManager (4.0.0) - framework: dnxcore50
          System.Globalization (>= 4.0.0)
          System.Reflection (>= 4.0.0)
          System.Reflection (>= 4.0.10) - framework: dnxcore50
          System.Runtime (>= 4.0.0)
          System.Runtime (>= 4.0.20) - framework: dnxcore50
        System.Runtime (4.0.20)
          System.Private.Uri (>= 4.0.0) - framework: dnxcore50
        System.Runtime.Extensions (4.0.10)
          System.Runtime (>= 4.0.20)
        System.Runtime.Handles (4.0.0)
          System.Runtime (>= 4.0.0)
        System.Runtime.InteropServices (4.0.20)
          System.Reflection (>= 4.0.0)
          System.Reflection.Primitives (>= 4.0.0)
          System.Runtime (>= 4.0.0)
          System.Runtime.Handles (>= 4.0.0)
        System.Runtime.WindowsRuntime (4.0.10) - framework: dnxcore50
          System.Diagnostics.Debug (>= 4.0.10) - framework: dnxcore50
          System.Globalization (>= 4.0.0) - framework: dnxcore50
          System.IO (>= 4.0.0)
          System.IO (>= 4.0.10) - framework: dnxcore50
          System.ObjectModel (>= 4.0.0) - framework: dnxcore50
          System.Resources.ResourceManager (>= 4.0.0) - framework: dnxcore50
          System.Runtime (>= 4.0.0)
          System.Runtime (>= 4.0.20) - framework: dnxcore50
          System.Runtime.Extensions (>= 4.0.0) - framework: dnxcore50
          System.Runtime.InteropServices (>= 4.0.20) - framework: dnxcore50
          System.Threading (>= 4.0.10) - framework: dnxcore50
          System.Threading.Tasks (>= 4.0.0)
          System.Threading.Tasks (>= 4.0.10) - framework: dnxcore50
        System.Text.Encoding (4.0.10)
          System.Runtime (>= 4.0.0)
        System.Text.Encoding.Extensions (4.0.10)
          System.Runtime (>= 4.0.0)
          System.Text.Encoding (>= 4.0.10)
        System.Text.RegularExpressions (4.0.10)
          System.Collections (>= 4.0.10)
          System.Globalization (>= 4.0.10)
          System.Resources.ResourceManager (>= 4.0.0)
          System.Runtime (>= 4.0.20)
          System.Runtime.Extensions (>= 4.0.10)
          System.Threading (>= 4.0.10)
        System.Threading (4.0.10)
          System.Runtime (>= 4.0.0)
          System.Threading.Tasks (>= 4.0.0)
        System.Threading.Overlapped (4.0.0) - framework: dnxcore50
          System.Resources.ResourceManager (>= 4.0.0) - framework: dnxcore50
          System.Runtime (>= 4.0.0)
          System.Runtime (>= 4.0.20) - framework: dnxcore50
          System.Runtime.Extensions (>= 4.0.0) - framework: dnxcore50
          System.Runtime.Handles (>= 4.0.0)
          System.Runtime.InteropServices (>= 4.0.20) - framework: dnxcore50
          System.Threading (>= 4.0.10) - framework: dnxcore50
        System.Threading.Tasks (4.0.10)
          System.Runtime (>= 4.0.0)
        System.Xml.ReaderWriter (4.0.10)
          System.Collections (>= 4.0.10)
          System.Diagnostics.Debug (>= 4.0.10)
          System.Globalization (>= 4.0.10)
          System.IO (>= 4.0.10)
          System.IO.FileSystem (>= 4.0.0)
          System.IO.FileSystem.Primitives (>= 4.0.0)
          System.Resources.ResourceManager (>= 4.0.0)
          System.Runtime (>= 4.0.20)
          System.Runtime.Extensions (>= 4.0.10)
          System.Runtime.InteropServices (>= 4.0.20)
          System.Text.Encoding (>= 4.0.10)
          System.Text.Encoding.Extensions (>= 4.0.10)
          System.Text.RegularExpressions (>= 4.0.10)
          System.Threading.Tasks (>= 4.0.10)
        System.Xml.XDocument (4.0.10)
          System.Collections (>= 4.0.10)
          System.Diagnostics.Debug (>= 4.0.10)
          System.Globalization (>= 4.0.10)
          System.IO (>= 4.0.10)
          System.Reflection (>= 4.0.10)
          System.Resources.ResourceManager (>= 4.0.0)
          System.Runtime (>= 4.0.20)
          System.Runtime.Extensions (>= 4.0.10)
          System.Text.Encoding (>= 4.0.10)
          System.Threading (>= 4.0.10)
          System.Xml.ReaderWriter (>= 4.0.10)
    

    In this case I pinned to the previous 3.5 version, to prevent this.

  5. forki commented on Sep 17, 2015

    @forki
    Member

    Yes it seems fluentassertions 4 is dependent on the whole Internet. No sure
    what we can do about it. Maybe send pr to the lib with more restrictions.
    On Sep 17, 2015 1:46 PM, "Eugen Richter" notifications@github.com wrote:

    Framework restrictions doesn't work. Have the same problem with FluentAssertions
    4.x library.

    nuget FluentAssertions framework: net40, net45

    GROUP UnitTests
    COPY-LOCAL: TRUE
    NUGET
    remote: https://www.nuget.org/api/v2
    specs:
    CommonServiceLocator (1.3)
    EntityFramework (6.1.3)
    FluentAssertions (4.0.0) - framework: net40, net45
    System.Collections (>= 4.0.10)
    System.Diagnostics.Debug (>= 4.0.10)
    System.Globalization (>= 4.0.10)
    System.Linq (>= 4.0.0)
    System.Linq.Expressions (>= 4.0.10)
    System.ObjectModel (>= 4.0.10)
    System.Reflection (>= 4.0.10)
    System.Reflection.Extensions (>= 4.0.0)
    System.Reflection.Primitives (>= 4.0.0)
    System.Reflection.TypeExtensions (>= 4.0.0)
    System.Runtime (>= 4.0.20)
    System.Runtime.Extensions (>= 4.0.10)
    System.Text.RegularExpressions (>= 4.0.10)
    System.Threading (>= 4.0.10)
    System.Threading.Tasks (>= 4.0.10)
    System.Xml.XDocument (>= 4.0.10)
    Moq (4.2.1507.0118)
    MvvmLightLibs (5.2.0.0)
    CommonServiceLocator (>= 1.0) - framework: sl40, >= net35 < net40
    CommonServiceLocator (>= 1.3)
    Newtonsoft.Json (7.0.1)
    NUnit (2.6.4)
    System.Collections (4.0.10)
    System.Diagnostics.Debug (>= 4.0.0) - framework: dnxcore50
    System.Resources.ResourceManager (>= 4.0.0) - framework: dnxcore50
    System.Runtime (>= 4.0.0)
    System.Runtime (>= 4.0.20) - framework: dnxcore50
    System.Runtime.Extensions (>= 4.0.0) - framework: dnxcore50
    System.Threading (>= 4.0.0) - framework: dnxcore50
    System.Data.SQLite (1.0.98.1) - content: none
    System.Data.SQLite.Core (>= 1.0.98.1) - framework: net20, net40, net45, >= net451, >= net46
    System.Data.SQLite.EF6 (>= 1.0.98.1) - framework: net40, net45, >= net451, >= net46
    System.Data.SQLite.Linq (>= 1.0.98.1) - framework: net20, net40, net45, >= net451, >= net46
    System.Data.SQLite.Core (1.0.98.1) - content: none, framework: net20, net40, net45, >= net451, >= net46
    System.Data.SQLite.EF6 (1.0.98.1) - content: none, framework: net40, net45, >= net451, >= net46
    EntityFramework (>= 6.0.0.0) - framework: net40, net45, >= net451, >= net46
    System.Data.SQLite.Linq (1.0.98.1) - content: none, framework: net20, net40, net45, >= net451, >= net46
    System.Diagnostics.Contracts (4.0.0) - framework: dnxcore50
    System.Runtime (>= 4.0.0)
    System.Diagnostics.Debug (4.0.10)
    System.Runtime (>= 4.0.0)
    System.Globalization (4.0.10)
    System.Runtime (>= 4.0.0)
    System.IO (4.0.10)
    System.Globalization (>= 4.0.0) - framework: dnxcore50
    System.Runtime (>= 4.0.20)
    System.Text.Encoding (>= 4.0.0)
    System.Text.Encoding (>= 4.0.10) - framework: dnxcore50
    System.Text.Encoding.Extensions (>= 4.0.0) - framework: dnxcore50
    System.Threading (>= 4.0.0) - framework: dnxcore50
    System.Threading.Tasks (>= 4.0.0)
    System.IO.FileSystem (4.0.0)
    System.Collections (>= 4.0.10) - framework: dnxcore50
    System.Diagnostics.Debug (>= 4.0.10) - framework: dnxcore50
    System.IO (>= 4.0.0)
    System.IO (>= 4.0.10) - framework: dnxcore50
    System.IO.FileSystem.Primitives (>= 4.0.0)
    System.Resources.ResourceManager (>= 4.0.0) - framework: dnxcore50
    System.Runtime (>= 4.0.0)
    System.Runtime (>= 4.0.20) - framework: dnxcore50
    System.Runtime.Extensions (>= 4.0.10) - framework: dnxcore50
    System.Runtime.Handles (>= 4.0.0)
    System.Runtime.InteropServices (>= 4.0.20) - framework: dnxcore50
    System.Runtime.WindowsRuntime (>= 4.0.0) - framework: dnxcore50
    System.Text.Encoding (>= 4.0.0)
    System.Text.Encoding (>= 4.0.10) - framework: dnxcore50
    System.Text.Encoding.Extensions (>= 4.0.10) - framework: dnxcore50
    System.Threading (>= 4.0.10) - framework: dnxcore50
    System.Threading.Overlapped (>= 4.0.0) - framework: dnxcore50
    System.Threading.Tasks (>= 4.0.0)
    System.Threading.Tasks (>= 4.0.10) - framework: dnxcore50
    System.IO.FileSystem.Primitives (4.0.0)
    System.Runtime (>= 4.0.20)
    System.Linq (4.0.0)
    System.Collections (>= 4.0.10)
    System.Diagnostics.Debug (>= 4.0.10)
    System.Resources.ResourceManager (>= 4.0.0)
    System.Runtime (>= 4.0.20)
    System.Runtime.Extensions (>= 4.0.10)
    System.Linq.Expressions (4.0.10)
    System.Collections (>= 4.0.0) - framework: dnxcore50
    System.Diagnostics.Debug (>= 4.0.0) - framework: dnxcore50
    System.Globalization (>= 4.0.0) - framework: dnxcore50
    System.IO (>= 4.0.0) - framework: dnxcore50
    System.Linq (>= 4.0.0) - framework: dnxcore50
    System.ObjectModel (>= 4.0.0) - framework: dnxcore50
    System.Reflection (>= 4.0.0)
    System.Reflection.Emit (>= 4.0.0) - framework: dnxcore50
    System.Reflection.Extensions (>= 4.0.0) - framework: dnxcore50
    System.Reflection.Primitives (>= 4.0.0) - framework: dnxcore50
    System.Reflection.TypeExtensions (>= 4.0.0) - framework: dnxcore50
    System.Resources.ResourceManager (>= 4.0.0) - framework: dnxcore50
    System.Runtime (>= 4.0.0)
    System.Runtime (>= 4.0.20) - framework: dnxcore50
    System.Runtime.Extensions (>= 4.0.0) - framework: dnxcore50
    System.Threading (>= 4.0.0) - framework: dnxcore50
    System.ObjectModel (4.0.10)
    System.Collections (>= 4.0.10)
    System.Diagnostics.Debug (>= 4.0.10)
    System.Resources.ResourceManager (>= 4.0.0)
    System.Runtime (>= 4.0.20)
    System.Threading (>= 4.0.10)
    System.Private.Uri (4.0.0) - framework: dnxcore50
    System.Reflection (4.0.10)
    System.IO (>= 4.0.0)
    System.Reflection.Primitives (>= 4.0.0)
    System.Runtime (>= 4.0.20)
    System.Reflection.Emit (4.0.0) - framework: dnxcore50
    System.IO (>= 4.0.0)
    System.Reflection (>= 4.0.0)
    System.Reflection.Emit.ILGeneration (>= 4.0.0)
    System.Reflection.Primitives (>= 4.0.0)
    System.Runtime (>= 4.0.0)
    System.Reflection.Emit.ILGeneration (4.0.0)
    System.Reflection (>= 4.0.0)
    System.Reflection.Primitives (>= 4.0.0)
    System.Runtime (>= 4.0.0)
    System.Reflection.Extensions (4.0.0)
    System.Diagnostics.Debug (>= 4.0.10) - framework: dnxcore50
    System.Reflection (>= 4.0.0)
    System.Reflection (>= 4.0.10) - framework: dnxcore50
    System.Reflection.Primitives (>= 4.0.0) - framework: dnxcore50
    System.Reflection.TypeExtensions (>= 4.0.0) - framework: dnxcore50
    System.Resources.ResourceManager (>= 4.0.0) - framework: dnxcore50
    System.Runtime (>= 4.0.0)
    System.Runtime (>= 4.0.20) - framework: dnxcore50
    System.Runtime.Extensions (>= 4.0.10) - framework: dnxcore50
    System.Reflection.Primitives (4.0.0)
    System.Runtime (>= 4.0.0)
    System.Threading (>= 4.0.0) - framework: dnxcore50
    System.Reflection.TypeExtensions (4.0.0)
    System.Diagnostics.Contracts (>= 4.0.0) - framework: dnxcore50
    System.Diagnostics.Debug (>= 4.0.10) - framework: dnxcore50
    System.Linq (>= 4.0.0) - framework: dnxcore50
    System.Reflection (>= 4.0.0)
    System.Reflection (>= 4.0.10) - framework: dnxcore50
    System.Reflection.Primitives (>= 4.0.0) - framework: dnxcore50
    System.Resources.ResourceManager (>= 4.0.0) - framework: dnxcore50
    System.Runtime (>= 4.0.0)
    System.Runtime (>= 4.0.20) - framework: dnxcore50
    System.Runtime.Extensions (>= 4.0.10) - framework: dnxcore50
    System.Resources.ResourceManager (4.0.0) - framework: dnxcore50
    System.Globalization (>= 4.0.0)
    System.Reflection (>= 4.0.0)
    System.Reflection (>= 4.0.10) - framework: dnxcore50
    System.Runtime (>= 4.0.0)
    System.Runtime (>= 4.0.20) - framework: dnxcore50
    System.Runtime (4.0.20)
    System.Private.Uri (>= 4.0.0) - framework: dnxcore50
    System.Runtime.Extensions (4.0.10)
    System.Runtime (>= 4.0.20)
    System.Runtime.Handles (4.0.0)
    System.Runtime (>= 4.0.0)
    System.Runtime.InteropServices (4.0.20)
    System.Reflection (>= 4.0.0)
    System.Reflection.Primitives (>= 4.0.0)
    System.Runtime (>= 4.0.0)
    System.Runtime.Handles (>= 4.0.0)
    System.Runtime.WindowsRuntime (4.0.10) - framework: dnxcore50
    System.Diagnostics.Debug (>= 4.0.10) - framework: dnxcore50
    System.Globalization (>= 4.0.0) - framework: dnxcore50
    System.IO (>= 4.0.0)
    System.IO (>= 4.0.10) - framework: dnxcore50
    System.ObjectModel (>= 4.0.0) - framework: dnxcore50
    System.Resources.ResourceManager (>= 4.0.0) - framework: dnxcore50
    System.Runtime (>= 4.0.0)
    System.Runtime (>= 4.0.20) - framework: dnxcore50
    System.Runtime.Extensions (>= 4.0.0) - framework: dnxcore50
    System.Runtime.InteropServices (>= 4.0.20) - framework: dnxcore50
    System.Threading (>= 4.0.10) - framework: dnxcore50
    System.Threading.Tasks (>= 4.0.0)
    System.Threading.Tasks (>= 4.0.10) - framework: dnxcore50
    System.Text.Encoding (4.0.10)
    System.Runtime (>= 4.0.0)
    System.Text.Encoding.Extensions (4.0.10)
    System.Runtime (>= 4.0.0)
    System.Text.Encoding (>= 4.0.10)
    System.Text.RegularExpressions (4.0.10)
    System.Collections (>= 4.0.10)
    System.Globalization (>= 4.0.10)
    System.Resources.ResourceManager (>= 4.0.0)
    System.Runtime (>= 4.0.20)
    System.Runtime.Extensions (>= 4.0.10)
    System.Threading (>= 4.0.10)
    System.Threading (4.0.10)
    System.Runtime (>= 4.0.0)
    System.Threading.Tasks (>= 4.0.0)
    System.Threading.Overlapped (4.0.0) - framework: dnxcore50
    System.Resources.ResourceManager (>= 4.0.0) - framework: dnxcore50
    System.Runtime (>= 4.0.0)
    System.Runtime (>= 4.0.20) - framework: dnxcore50
    System.Runtime.Extensions (>= 4.0.0) - framework: dnxcore50
    System.Runtime.Handles (>= 4.0.0)
    System.Runtime.InteropServices (>= 4.0.20) - framework: dnxcore50
    System.Threading (>= 4.0.10) - framework: dnxcore50
    System.Threading.Tasks (4.0.10)
    System.Runtime (>= 4.0.0)
    System.Xml.ReaderWriter (4.0.10)
    System.Collections (>= 4.0.10)
    System.Diagnostics.Debug (>= 4.0.10)
    System.Globalization (>= 4.0.10)
    System.IO (>= 4.0.10)
    System.IO.FileSystem (>= 4.0.0)
    System.IO.FileSystem.Primitives (>= 4.0.0)
    System.Resources.ResourceManager (>= 4.0.0)
    System.Runtime (>= 4.0.20)
    System.Runtime.Extensions (>= 4.0.10)
    System.Runtime.InteropServices (>= 4.0.20)
    System.Text.Encoding (>= 4.0.10)
    System.Text.Encoding.Extensions (>= 4.0.10)
    System.Text.RegularExpressions (>= 4.0.10)
    System.Threading.Tasks (>= 4.0.10)
    System.Xml.XDocument (4.0.10)
    System.Collections (>= 4.0.10)
    System.Diagnostics.Debug (>= 4.0.10)
    System.Globalization (>= 4.0.10)
    System.IO (>= 4.0.10)
    System.Reflection (>= 4.0.10)
    System.Resources.ResourceManager (>= 4.0.0)
    System.Runtime (>= 4.0.20)
    System.Runtime.Extensions (>= 4.0.10)
    System.Text.Encoding (>= 4.0.10)
    System.Threading (>= 4.0.10)
    System.Xml.ReaderWriter (>= 4.0.10)

    —
    Reply to this email directly or view it on GitHub
    #1066 (comment).

  6. vbfox commented on Sep 21, 2015

    @vbfox
    Contributor

    All the dependencies are in a section of the .nuspec that specifies the framework :

        <dependencies>
          <group targetFramework=".NETFramework4.0" />
          <group targetFramework="Silverlight5.0" />
          <group targetFramework="Windows8.0" />
          <group targetFramework="WindowsPhone8.0" />
          <group targetFramework="WindowsPhoneApp8.1" />
          <group targetFramework="Xamarin.iOS0.0" />
          <group targetFramework="MonoTouch0.0" />
          <group targetFramework="MonoAndroid0.0" />
          <group targetFramework=".NETPortable0.0-net40+sl5+win8+wp8+wpa81" />
          <group targetFramework=".NETPlatform5.0">
            <dependency id="System.Collections" version="4.0.10" />
            <dependency id="System.Diagnostics.Debug" version="4.0.10" />
            <dependency id="System.Globalization" version="4.0.10" />
            <dependency id="System.Linq" version="4.0.0" />
            <dependency id="System.Linq.Expressions" version="4.0.10" />
            <dependency id="System.ObjectModel" version="4.0.10" />
            <dependency id="System.Reflection" version="4.0.10" />
            <dependency id="System.Reflection.Extensions" version="4.0.0" />
            <dependency id="System.Reflection.Primitives" version="4.0.0" />
            <dependency id="System.Reflection.TypeExtensions" version="4.0.0" />
            <dependency id="System.Runtime" version="4.0.20" />
            <dependency id="System.Runtime.Extensions" version="4.0.10" />
            <dependency id="System.Text.RegularExpressions" version="4.0.10" />
            <dependency id="System.Threading" version="4.0.10" />
            <dependency id="System.Threading.Tasks" version="4.0.10" />
            <dependency id="System.Xml.XDocument" version="4.0.10" />
          </group>
        </dependencies>

    It seem like a good feature for paket to not even download the dependencies if it is framework restricted in the dependencies file :

    nuget FluentAssertions framework: net40, net45
    
  7. konste commented on Sep 22, 2015

    @konste
    Contributor

    This issue causes me lots of trouble- indeed framework restrictions don't seem to do anything. Not clear why they even exist and what actually changes when you specify any.

    The biggest problem is not even Paket downloading binaries for all exotic platforms we could not care less about. Real problem is that all those binaries get referenced from the projects. Conditionally referenced, I understand, but still their presence is not benign. I'm yet to figure out how exactly they get in he way, but we end up with the ton of warnings about inability to resolve assembly version conflict during the build.

    Is it possible not to add excluded platforms to projects during "Paket install" process?

  8. vbfox commented on Sep 22, 2015

    @vbfox
    Contributor

    @konste Except if there was a regression, specifying framework on an element should add only the referenced framework in the .*proj files.

    For me with a paket.dependencies of :

    source https://nuget.org/api/v2
    nuget FluentAssertions framework: net40, net45
    

    I only get 2 conditional blocks, one for each platform (Removing the framework limitation generates a lot more) :

    <Choose>
        <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.0'">
            <ItemGroup>
            <Reference Include="FluentAssertions.Core">
                <HintPath>..\packages\FluentAssertions\lib\net40\FluentAssertions.Core.dll</HintPath>
                <Private>True</Private>
                <Paket>True</Paket>
            </Reference>
            <Reference Include="FluentAssertions">
                <HintPath>..\packages\FluentAssertions\lib\net40\FluentAssertions.dll</HintPath>
                <Private>True</Private>
                <Paket>True</Paket>
            </Reference>
            </ItemGroup>
        </When>
        <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
            <ItemGroup>
            <Reference Include="FluentAssertions.Core">
                <HintPath>..\packages\FluentAssertions\lib\net45\FluentAssertions.Core.dll</HintPath>
                <Private>True</Private>
                <Paket>True</Paket>
            </Reference>
            <Reference Include="FluentAssertions">
                <HintPath>..\packages\FluentAssertions\lib\net45\FluentAssertions.dll</HintPath>
                <Private>True</Private>
                <Paket>True</Paket>
            </Reference>
            </ItemGroup>
        </When>
    </Choose>

    Also they can't affect the build at all as MSBuild completly ignore them.

    Warnings about assembly version conflicts are most often due to a .Net 4.5 project referencing a .Net 4.0 project, both of them referencing the same Dll.

    The problem is that you end up with a reference graph like that :

    + ProjectA net45
    | - Lib in ...\Lib\lib\net45\Lib.dll
    | + Project B net40
    | | - Lib in ...\Lib\lib\net40\Lib.dll
    

    And msbuild doesn't like it. It's exactly the same problem in nuget BTW, it's not specific to paket.

    The solution is to edit the net45 project file by hand to make it reference the net40 dll.
    To do it, take the nodes generated by paket and remove both the Choose, When and Paket elements. Paket will recognize that you added the package references manually and won't try to add his own again :

    <ItemGroup>
        <!-- Paket packages added manually to force net40 version -->
        <Reference Include="FluentAssertions.Core">
            <HintPath>..\packages\FluentAssertions\lib\net40\FluentAssertions.Core.dll</HintPath>
            <Private>True</Private>
        </Reference>
        <Reference Include="FluentAssertions">
            <HintPath>..\packages\FluentAssertions\lib\net40\FluentAssertions.dll</HintPath>
            <Private>True</Private>
        </Reference>
    </ItemGroup>
  9. konste commented on Sep 22, 2015

    @konste
    Contributor

    I will definitely experiment more tomorrow, but I would like to clarify one detail documentation is not clear about:

    What is the relationship between framework restriction specified at the top of Paket.dependencies file and the one specified directly on the particular package? Is one of them overriding another or they get combined somehow?

    As far as I understand framework restriction at the top supposed to specify framework(s) the solution is actually targeting. But what is the point to restrict framework for particular package without applying the same restriction to other packages?

    < sent from mobile device >

    On Sep 21, 2015, at 11:55 PM, Julien Roncaglia <notifications@github.commailto:notifications@github.com> wrote:

    @konstehttps://github.com/konste Except if there was a regression, specifying framework on an element should add only the referenced framework in the .*proj files.

    For me with a paket.dependencies of :

    source https://nuget.org/api/v2
    nuget FluentAssertions framework: net40, net45

    I only get 2 conditional blocks, one for each platform :

    ..\packages\FluentAssertions\lib\net40\FluentAssertions.Core.dll True True ..\packages\FluentAssertions\lib\net40\FluentAssertions.dll True True ..\packages\FluentAssertions\lib\net45\FluentAssertions.Core.dll True True ..\packages\FluentAssertions\lib\net45\FluentAssertions.dll True True

    Also they can't affect the build at all as MSBuild completly ignore them.

    Warnings about assembly version conflicts are most often due to a .Net 4.5 project referencing a .Net 4.0 project, both of them referencing the same Dll.

    The problem is that you end up with a reference graph like that :

    • ProjectA net45
      | - Lib in ...\Lib\lib\net45\Lib.dll
      | + Project B net40
      | | - Lib in ...\Lib\lib\net40\Lib.dll

    And msbuild doesn't like it. It's exactly the same problem in nuget BTW, it's not specific to paket.

    The solution is to edit the net45 project file by hand to make it reference the net40 dll.
    To do it, take the nodes generated by paket and remove both the Choose, When and Paket elements. Paket will recognize that you added the package references manually and won't try to add his own again :

    ..\packages\FluentAssertions\lib\net40\FluentAssertions.Core.dll True ..\packages\FluentAssertions\lib\net40\FluentAssertions.dll True

    Reply to this email directly or view it on GitHubhttps://github.com//issues/1066#issuecomment-142196322.

  10. konste commented on Sep 22, 2015

    @konste
    Contributor

    Another question is how framework restriction specified for directly referenced package is propagated (?) to transitive dependencies not specified in Packet.dependencies, but resolved in Paket.lock. I was under impression that three BCL packages brought in as indirect dependencies are all referenced with all their supported platforms.

    < sent from mobile device >

    On Sep 21, 2015, at 11:55 PM, Julien Roncaglia <notifications@github.commailto:notifications@github.com> wrote:

    @konstehttps://github.com/konste Except if there was a regression, specifying framework on an element should add only the referenced framework in the .*proj files.

    For me with a paket.dependencies of :

    source https://nuget.org/api/v2
    nuget FluentAssertions framework: net40, net45

    I only get 2 conditional blocks, one for each platform :

    ..\packages\FluentAssertions\lib\net40\FluentAssertions.Core.dll True True ..\packages\FluentAssertions\lib\net40\FluentAssertions.dll True True ..\packages\FluentAssertions\lib\net45\FluentAssertions.Core.dll True True ..\packages\FluentAssertions\lib\net45\FluentAssertions.dll True True

    Also they can't affect the build at all as MSBuild completly ignore them.

    Warnings about assembly version conflicts are most often due to a .Net 4.5 project referencing a .Net 4.0 project, both of them referencing the same Dll.

    The problem is that you end up with a reference graph like that :

    • ProjectA net45
      | - Lib in ...\Lib\lib\net45\Lib.dll
      | + Project B net40
      | | - Lib in ...\Lib\lib\net40\Lib.dll

    And msbuild doesn't like it. It's exactly the same problem in nuget BTW, it's not specific to paket.

    The solution is to edit the net45 project file by hand to make it reference the net40 dll.
    To do it, take the nodes generated by paket and remove both the Choose, When and Paket elements. Paket will recognize that you added the package references manually and won't try to add his own again :

    ..\packages\FluentAssertions\lib\net40\FluentAssertions.Core.dll True ..\packages\FluentAssertions\lib\net40\FluentAssertions.dll True

    Reply to this email directly or view it on GitHubhttps://github.com//issues/1066#issuecomment-142196322.

  11. forki commented on Sep 22, 2015

    @forki
    Member

    Paket should now filter out that dnx crap.

  12. konste commented on Sep 22, 2015

    @konste
    Contributor

    This is great (and timely!), but while we are at it could you please answer my two questions I asked above? To save time I repeat them here:

    What is the relationship between framework restriction specified at the top of Paket.dependencies file and the one specified directly on the particular package? Is one of them overriding another or they get combined somehow? As far as I understand framework restriction at the top supposed to specify framework(s) the solution is actually targeting. But what is the point to restrict framework for particular package without applying the same restriction to other packages?

    Another question is how framework restriction specified for directly referenced package is propagated (?) to transitive dependencies not specified in Packet.dependencies, but resolved in Paket.lock. I was under impression that three BCL packages brought in as indirect dependencies are all referenced with all their supported platforms.

  13. forki commented on Sep 22, 2015

    @forki
    Member
    What is the relationship between framework restriction specified at the top of Paket.dependencies file and the one specified directly on the particular package? 
    Is one of them overriding another or they get combined somehow?
    

    yes they are combined.

    But what is the point to restrict framework for particular package without applying the same restriction to other packages?
    

    sometimes only a single package makes trouble.

    how framework restriction specified for directly referenced package is propagated
    

    yes they should propagate to transisitv dependencies. I also fixed a little bit of these settings

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions