CS0246 de erro do compilador (tipo ou namespace não encontrada) em usar Ninject em ASP.NET vNext

votos
5

Eu quero usar Ninject em uma biblioteca de classes Asp.Net vNext. Mas eu fico Compiler CS0246 de erro ( O tipo ou nome do namespace 'Ninject' não pôde ser encontrado).

Aqui está o que eu fiz:

1) Criar um novo ASP.NET vNext Class Library

2) Editar project.json:

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

3) Verifique 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

Parece bem ..

4) Editar Class1.cs:

using Ninject;

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

Intellisense pode resolver as referências a Ninject.

digite

5) Construir e eu tenho 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)

O que está errado?

Publicado 08/08/2014 em 14:18
fonte usuário
Em outras línguas...                            


1 respostas

votos
4

Ninject não está disponível para o Optimized CLR Cloud (CoreCLR ou K10). Além disso, existe um problema conhecido no VS 2014 que constrói todas as configurações disponíveis, no seu caso net451 e k10, independentemente do que você escolheu nas propriedades do projeto - é por isso que você vê essas duas linhas e os erros menores de K:

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

Se você precisar de Ninject e que você deseja alcançar tanto desktop CLR e Core CLR, em seguida, usar um #if K10ou #if NET45bloco de compilação condicional, como eu fiz aqui . Basicamente você vai usar Ninject Desktop CLR e para fora do recipiente caixa de DI para Núcleo CLR.

Se você quiser que seu aplicativo para executar somente no ambiente de trabalho CLR, em seguida, remover a configuração K10 partir project.json.

Respondeu 08/08/2014 em 17:01
fonte usuário

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