Jussi Kosunen
Jussi Kosunen

Reputation: 8307

.NET Framework Class Library with Microsoft.Extensions.DependencyInjection

I have a .NET Framework (4.5.2) class library that I'd like to use Microsoft.Extensions.DependencyInjection with as we're separately developing an ASP.NET Core app.

I installed it using nuget, it works fine when I build using Visual Studio but trying to build it using MSBuild on a TeamCity build agent gives me a lot of this:

MyClass.cs(32, 26): error CS0012: The type 'IServiceProvider' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.ComponentModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
MyClass.cs(33, 31): error CS0012: The type 'IDisposable' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
MyClass.cs(33, 31): error CS1061: 'IServiceScope' does not contain a definition for 'Dispose' and no extension method 'Dispose' accepting a first argument of type 'IServiceScope' could be found (are you missing a using directive or an assembly reference?)
MyClass.cs(34, 10): error CS0012: The type 'IDisposable' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
MyClass.cs(34, 10): error CS0012: The type 'IServiceProvider' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.ComponentModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
MyClass.cs(35, 10): error CS0012: The type 'IDisposable' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
MyClass.cs(35, 10): error CS0012: The type 'IServiceProvider' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.ComponentModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
MyClass.cs(36, 51): error CS0012: The type 'IDisposable' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
MyClass.cs(36, 51): error CS0012: The type 'IServiceProvider' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.ComponentModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
MyClass.cs(36, 30): error CS0012: The type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

Some of the nuget packages (like Microsoft.Extensions.DependencyInjection itself) don't have a separate net452 assembly and only netstandard1.0 or netstandard1.1. Could this be the issue? I installed the .NET Core SDK on the build server to no effect.

Upvotes: 3

Views: 2903

Answers (2)

Pramod Raut
Pramod Raut

Reputation: 697

I was facing the same issue but after using NuGet Installer as a build step my all problems gets resolved.

Just you need to do one thing, before going to build your project - Just add one build step and select Runner type as NuGet Installer

You can check from this screenshots:

enter image description here

Upvotes: 1

Jussi Kosunen
Jussi Kosunen

Reputation: 8307

Turns out I was missing the .NET Framework 4.5.2 Developer Pack, strange that all my other solutions built fine without it.

Upvotes: 0

Related Questions