sdk: net40 application with Microsoft.Bcl.Async cannot resolve dependencies
Steps to reproduce
Create a net40
application that references Microsoft.Bcl.Async
and uses await:
project.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net40</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Bcl.Async" Version="1.0.168" />
</ItemGroup>
</Project>
Program.cs:
using System.Threading.Tasks;
class Program
{
static void Main() => F().Wait();
static async Task F() => await TaskEx.Delay(100);
}
Start with dotnet run
Expected behavior
Program should start.
Actual behavior
Creates errors
C:\Program Files\dotnet\sdk\1.0.0\Microsoft.Common.CurrentVersion.targets(1964,5): warning MSB3268:
The primary reference "C:\Users\Schoenke\.nuget\packages\microsoft.bcl.async\1.0.168\lib\net40\Micro
soft.Threading.Tasks.dll" could not be resolved because it has an indirect dependency on the framewo
rk assembly "System.Threading.Tasks, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50
a3a" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.0".
To resolve this problem, either remove the reference "C:\Users\Schoenke\.nuget\packages\microsoft.bc
l.async\1.0.168\lib\net40\Microsoft.Threading.Tasks.dll" or retarget your application to a framework
version which contains "System.Threading.Tasks, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b
03f5f7f11d50a3a". [C:\Users\Schoenke\Documents\Visual Studio 2017\Projects\NetCoreBCLTest\NetCoreBCL
Test\NetCoreBCLTest.csproj]
C:\Program Files\dotnet\sdk\1.0.0\Microsoft.Common.CurrentVersion.targets(1964,5): warning MSB3268:
The primary reference "C:\Users\Schoenke\.nuget\packages\microsoft.bcl.async\1.0.168\lib\net40\Micro
soft.Threading.Tasks.Extensions.dll" could not be resolved because it has an indirect dependency on
the framework assembly "System.Threading.Tasks, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b0
3f5f7f11d50a3a" which could not be resolved in the currently targeted framework. ".NETFramework,Vers
ion=v4.0". To resolve this problem, either remove the reference "C:\Users\Schoenke\.nuget\packages\m
icrosoft.bcl.async\1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll" or retarget your appl
ication to a framework version which contains "System.Threading.Tasks, Version=1.5.11.0, Culture=neu
tral, PublicKeyToken=b03f5f7f11d50a3a". [C:\Users\Schoenke\Documents\Visual Studio 2017\Projects\Net
CoreBCLTest\NetCoreBCLTest\NetCoreBCLTest.csproj]
C:\Program Files\dotnet\sdk\1.0.0\Microsoft.Common.CurrentVersion.targets(1964,5): warning MSB3268:
The primary reference "C:\Users\Schoenke\.nuget\packages\microsoft.bcl.async\1.0.168\lib\net40\Micro
soft.Threading.Tasks.dll" could not be resolved because it has an indirect dependency on the framewo
rk assembly "System.Runtime, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" whi
ch could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.0". To resol
ve this problem, either remove the reference "C:\Users\Schoenke\.nuget\packages\microsoft.bcl.async\
1.0.168\lib\net40\Microsoft.Threading.Tasks.dll" or retarget your application to a framework version
which contains "System.Runtime, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
. [C:\Users\Schoenke\Documents\Visual Studio 2017\Projects\NetCoreBCLTest\NetCoreBCLTest\NetCoreBCLT
est.csproj]
C:\Program Files\dotnet\sdk\1.0.0\Microsoft.Common.CurrentVersion.targets(1964,5): warning MSB3268:
The primary reference "C:\Users\Schoenke\.nuget\packages\microsoft.bcl.async\1.0.168\lib\net40\Micro
soft.Threading.Tasks.Extensions.dll" could not be resolved because it has an indirect dependency on
the framework assembly "System.Runtime, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11
d50a3a" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.0
". To resolve this problem, either remove the reference "C:\Users\Schoenke\.nuget\packages\microsoft
.bcl.async\1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll" or retarget your application
to a framework version which contains "System.Runtime, Version=1.5.11.0, Culture=neutral, PublicKeyT
oken=b03f5f7f11d50a3a". [C:\Users\Schoenke\Documents\Visual Studio 2017\Projects\NetCoreBCLTest\NetC
oreBCLTest\NetCoreBCLTest.csproj]
Program.cs(9,40): error CS0103: The name 'TaskEx' does not exist in the current context [C:\Users\Sc
hoenke\Documents\Visual Studio 2017\Projects\NetCoreBCLTest\NetCoreBCLTest\NetCoreBCLTest.csproj]
The build failed. Please fix the build errors and run again.
Environment data
dotnet --info
output:
.NET Command Line Tools (1.0.0)
Product Information:
Version: 1.0.0
Commit SHA-1 hash: e53429feb4
Runtime Environment:
OS Name: Windows
OS Version: 6.1.7601
OS Platform: Windows
RID: win7-x86
Base Path: C:\Program Files\dotnet\sdk\1.0.0
Side Note:
Similar behaviour with Microsoft.Net.Http
which fails to resolve System.Net.Http
.
About this issue
- Original URL
- State: open
- Created 7 years ago
- Reactions: 14
- Comments: 21 (5 by maintainers)
Commits related to this issue
- bring in net40 async packages bc of runtime bug https://github.com/dotnet/cli/issues/5993 — committed to stackify/stackify-api-dotnet by deleted user 7 years ago
@rguryanov your example maybe work when OutputType is Exe,but Library did not
this problem had be solved in this by @ericstj
just to add
app.net40.config like below:
One workaround for that problem. Add import to Microsoft.Bcl.Build.targets in .csproj:
<Import Project="..\Microsoft.Bcl.Build.targets" Condition="Exists('..\Microsoft.Bcl.Build.targets')" />
File Microsoft.Bcl.Build.targets can be found in packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets when you install Microsoft.Bcl.Async nuget in classic windows desktop app.And add App.config to project (in vs add-> new item-> application configuration file):
When you target multiple frameworks do remember to change condition for import and App.config. For example to something as
No, those libraries shipped out of our old Roxel tree. We’ve published the source code as part of reference source.
I’m not entirely sure why this doesn’t work. I’ll take a look. Setting AGBR should have fixed the issue but it doesn’t.
@canton7 Issue have been started for console application. Workaround for class library would be something like https://github.com/rguryanov/dotnet-cli-5993-multitarget you need additionally add import to Microsoft.Bcl.Build.targets from Microsoft.Bcl.Build package (and build process depends on libs from package, so copy package in your solution dir) in both class library and app.