Kompilator feil CS0246 (type eller navnerom ikke funnet) om bruk Ninject i ASP.NET vNext

stemmer
5

Jeg vil bruke Ninject i en Asp.Net vNext Class Library. Men jeg får Compiler Feil CS0246 ( The type eller navnerom navnet 'Ninject' ble ikke funnet).

Her er hva jeg har gjort:

1) Lag en ny ASP.NET vNext Class Library

2) Edit project.json:

{         
    dependencies: {
        Ninject: 3.2.2.0
    },
    configurations : {
        net451 : { 
            dependencies: {
            }
        },
        k10 : { 
            dependencies: {
                System.Runtime: 4.0.20.0
            }
        }
    }
}

3) Sjekk Package Manager Log:

Restoring packages for C:\Projects\ClassLib1\project.json
Attempting to resolve dependency ClassLib1 >= 1.0.0
Attempting to resolve dependency Ninject >= 3.2.2.0
  GET https://www.nuget.org/api/v2/FindPackagesById()?Id='Ninject'
Attempting to resolve dependency mscorlib >= 
Attempting to resolve dependency System >= 
Attempting to resolve dependency System.Core >= 
Attempting to resolve dependency Microsoft.CSharp >= 
Attempting to resolve dependency ClassLib1 >= 1.0.0
Attempting to resolve dependency Ninject >= 3.2.2.0
Attempting to resolve dependency System.Runtime >= 4.0.20.0
  OK https://www.nuget.org/api/v2/FindPackagesById()?Id='Ninject' 1250ms
  GET https://www.nuget.org/api/v2/FindPackagesById?id='Ninject'&$skiptoken='Ninject','3.0.2-unstable-9057'
  OK https://www.nuget.org/api/v2/FindPackagesById?id='Ninject'&$skiptoken='Ninject','3.0.2-unstable-9057' 179ms
  GET https://www.nuget.org/api/v2/package/Ninject/3.2.2
  OK https://www.nuget.org/api/v2/package/Ninject/3.2.2 949ms
Resolving complete, 2531ms elapsed
Installing Ninject 3.2.2.0
Restore complete, 2755ms elapsed

Ser fint ..

4) Edit Class1.cs:

using Ninject;

namespace ClassLib1
{
    public class Class1
    {
        public Class1()
        {
            var kernel = new StandardKernel();
        }
    }
}

IntelliSense kan løse referanser til Ninject.

skriv

5) Bygg og jeg fikk CS0246:

1>------ Build started: Project: ClassLib1, Configuration: Debug Any CPU ------
1>  Building ClassLib1 .NETFramework,Version=v4.5.1
1>  Building ClassLib1 K,Version=v1.0
1>C:\Projects\ClassLib1\Class1.cs(1,7): error CS0246: The type or namespace name 'Ninject' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Projects\ClassLib1\Class1.cs(9,30): error CS0246: The type or namespace name 'StandardKernel' could not be found (are you missing a using directive or an assembly reference?)
1>  
1>  Build failed.
1>      0 Warnings(s)
1>      2 Error(s)

Hva er galt?

Publisert på 08/08/2014 klokken 13:18
kilden bruker
På andre språk...                            


1 svar

stemmer
4

NInject er ikke tilgjengelig for Cloud Optimalisert CLR (CoreCLR eller K10). Også er det et kjent problem i VS 2014 at det bygger alle tilgjengelige konfigurasjoner, i ditt tilfelle net451 og K10, uavhengig av hva du valgte i prosjektet egenskaper - det er derfor du ser disse to linjene og feilene i henhold K:

1>  Building ClassLib1 .NETFramework,Version=v4.5.1
1>  Building ClassLib1 K,Version=v1.0

Hvis du trenger NInject og du ønsker å målrette både Desktop CLR og Core CLR deretter bruke en #if K10eller #if NET45betinget kompilering blokk som jeg gjorde her . I utgangspunktet vil du bruke NInject for Desktop CLR og ut av boksen DI beholder for Core-CLR.

Hvis du vil at app til å kjøre bare på skrivebordet CLR, og deretter fjerne K10 konfigurasjon fra project.json.

Svarte 08/08/2014 kl. 16:01
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more