Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ignore DotNET 5.0 framework? #1066

Closed
ctaggart opened this issue Sep 15, 2015 · 13 comments
Closed

Ignore DotNET 5.0 framework? #1066

ctaggart opened this issue Sep 15, 2015 · 13 comments
Labels

Comments

@ctaggart
Copy link
Contributor

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

@forki
Copy link
Member

forki commented Sep 15, 2015

Yes ms is starting to ship the framework as nuget packages. What do you
propose?
On Sep 15, 2015 10:55 PM, "Cameron Taggart" [email protected]
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.

@ctaggart
Copy link
Contributor Author

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

@forki
Copy link
Member

forki commented Sep 16, 2015

did you try to set framework restrictions? http://fsprojects.github.io/Paket/nuget-dependencies.html#Framework-restrictions

@WebDucer
Copy link

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.

@forki
Copy link
Member

forki commented Sep 17, 2015

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" [email protected] 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).

@vbfox
Copy link
Contributor

vbfox commented Sep 21, 2015

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

@konste
Copy link
Contributor

konste commented Sep 22, 2015

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?

@vbfox
Copy link
Contributor

vbfox commented Sep 22, 2015

@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>

@konste
Copy link
Contributor

konste commented Sep 22, 2015

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 <[email protected]mailto:[email protected]> 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.

@konste
Copy link
Contributor

konste commented Sep 22, 2015

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 <[email protected]mailto:[email protected]> 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.

@forki forki added the bug label Sep 22, 2015
@forki forki closed this as completed in fa52703 Sep 22, 2015
@forki
Copy link
Member

forki commented Sep 22, 2015

Paket should now filter out that dnx crap.

@konste
Copy link
Contributor

konste commented Sep 22, 2015

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.

@forki
Copy link
Member

forki commented Sep 22, 2015

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
Labels
Projects
None yet
Development

No branches or pull requests

5 participants