c# - El tipo ''Objeto'' se define en un ensamblaje al que no se hace referencia(NET Standard 2.0/.NET Framework 4.6.1)
.net-standard .net-4.6.1 (6)
Después de instalar NET Core 2.0 preview 2 y actualizar a la última versión de Visual Studio 2017 Preview (15.3), las referencias ahora se instalan automáticamente.
De acuerdo con este problema de GitHub , al tratar con un problema similar, debe agregar manualmente una referencia al paquete NETStandard.Library.NETFramework
dentro de su proyecto .NET Framework por ahora * .
O instalarlo a través de la consola NuGet:
Install-Package NETStandard.Library.NETFramework -Version 2.0.0-preview1-25305-02 -Pre
Hace unos días, se lanzó NET Core / Standard 2.0 preview 2; si actualizaba, se necesita la siguiente versión:
Install-Package NETStandard.Library.NETFramework -Version 2.0.0-preview2-25405-01 -Pre
o a través de la tienda NuGet (marque Mostrar versiones preliminares ) y busque NETStandard.Library.NETFramework
Esto resolverá las referencias, los errores deberían desaparecer.
* Joperezr afirma que Microsoft planea dejar que una herramienta maneje esto más adelante.
Por ahora, debe agregar manualmente una referencia a este paquete, lo que puede ser molesto, pero en el futuro planeamos que las herramientas lo hagan por usted.
Estoy usando la vista previa de .NET Standard 2.0 , en la que se basan mis bibliotecas de clases.
Después de tener problemas con algunos paquetes de NuGet, especialmente con respecto a la extracción de archivos, decidí migrar mis proyectos de .NET Core 2.0 Console a .NET Framework 4.6.1.
Se supone que .NET Framework 4.6.1 debe implementar la especificación .NET Standard 2.0, de acuerdo con diferentes fuentes. Especialmente la dotnet / standard GitHub Repo .
Desafortunadamente, la migración a .NET Framework dio lugar a los siguientes errores en todos los proyectos de .NET Framework Console:
Error CS0012 El tipo ''Objeto'' se define en un ensamblaje al que no se hace referencia. Debe agregar una referencia al ensamblado ''netstandard, Versión = 2.0.0.0, Cultura = neutral, PublicKeyToken = cc7b13ffcd2ddd51''.
Donde Object
puede ser cualquier cosa: Enum
, Task
, ...
¿Cómo haría referencia a las bibliotecas de clase .NET Standard 2.0 con .NET Framework (4.6.1) sin obtener tales errores?
Intente agregar una referencia de netstandard en web.config como este:
<system.web>
<compilation debug="true" targetFramework="4.7.1" >
<assemblies>
<add assembly="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"/>
</assemblies>
</compilation>
</system.web>
Por si acaso algunas personas siguen teniendo este problema como yo.
actualice su versión de Visual Studio 2017 a> 15.3 (verifique la versión en ayuda -> desde el menú superior), tuve la versión 15.2 y al ver este error, hice todo lo que encontré aquí o github pero no solucioné mi problema. Luego actualicé la versión de estudio visual y la reparé.
Si está utilizando MSBuild for CI como Jenkins, actualice las herramientas de compilación (puede descargarlo nuevamente en https://www.visualstudio.com/downloads/#build-tools-for-visual-studio-2017 ) y asegúrese de Se comprueba ".NET Core build tools".
Referencia: https://github.com/dotnet/standard/issues/458
Tuve este problema en mi proyecto de prueba al usar TestServer
para probar mis vistas MVC.
El proyecto de prueba, el proyecto web y las bibliotecas asociadas fueron todos netcoreapp2.0
.
La actualización de vs2017 a 15.5 no funcionó, y editar mi prueba .csproj con las siguientes correcciones sugeridas no funcionó:
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
<ItemGroup><Reference Include="netstandard" /></ItemGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
Según https://github.com/aspnet/Razor/issues/1212#issuecomment-297885722 , esto funcionó:
<Target Name="CopyDepsFiles" AfterTargets="Build" Condition="''$(TargetFramework)''!=''''">
<ItemGroup>
<DepsFilePaths Include="$([System.IO.Path]::ChangeExtension(''%(_ResolvedProjectReferencePaths.FullPath)'', ''.deps.json''))" />
</ItemGroup>
<Copy SourceFiles="%(DepsFilePaths.FullPath)" DestinationFolder="$(OutputPath)" Condition="Exists(''%(DepsFilePaths.FullPath)'')" />
</Target>
Tuve este problema incluso después de usar la última versión 2.0 y VS 15.3. Sin embargo, creo que mi problema era diferente. Después de actualizar de Core 1.1 a 2.0, por alguna razón, mi .web''s .csproj tenía <RuntimeFrameworkVersion>1.1.2</RuntimeFrameworkVersion>
. Lo que impidió que el proyecto tuviera como objetivo la versión 2.0 correcta.
Los proyectos de mis bibliotecas de clases (.Layer) tenían <NetStandardImplicitPackageVersion>1.6.1</NetStandardImplicitPackageVersion>
.
Los borré y mi proyecto finalmente comenzó a usar 2.0 y todo salió bien después.