visual studio manager c# .net visual-studio visual-studio-2015 project.json

c# - nuget package manager visual studio 2017



Cómo permitir que un xproject de Visual Studio 2015(project.json) haga referencia al marco más alto de un proyecto dependiente (1)

Estoy creando una biblioteca reutilizable que se dirige a varias plataformas (.NET 4.0, .NET 4.5, .NETStandard 1.0 y .NETStandard 1.3). La versión .NET 4.5 de este proyecto contiene algunas características que no están disponibles en la versión .NET 4.0.

El proyecto de prueba de unidad que hace referencia a este proyecto de biblioteca tiene una sola plataforma de destino, es decir, NET 4.5.1. Este proyecto de prueba obviamente contiene algún código que prueba las características específicas de .NET 4.5 de la biblioteca central.

Desafortunadamente, sin embargo, el proyecto de prueba no compila, porque Visual Studio parece hacer referencia a la versión .NETStandard 1.0, que obviamente no contiene esta característica.

Para demostrar mi problema, reduje esto a los siguientes dos proyectos:

Biblioteca central

{ "version": "1.0.0-*", "frameworks": { "netstandard1.0": { "dependencies": { "NETStandard.Library": "1.6.0" } }, "net40": {}, "net45": {} } }

Archivo de código:

namespace CoreLibrary { #if NETSTANDARD1_0 public class ClassNetStandard { } #endif #if NET40 public class ClassNet40 { } #endif #if NET45 public class ClassNet45 { } #endif }

Biblioteca de prueba:

{ "version": "1.0.0-*", "dependencies": { "CoreLibrary": { "target": "project" } }, "frameworks": { "net451": {} } }

Código:

// This compiles new CoreLibrary.ClassNetStandard(); // This doesn''t. // error: Type or namespace ''ClassNet40'' does not exist in namespace ''CoreLibrary'' new CoreLibrary.ClassNet40(); // error: Type or namespace ''ClassNet45'' does not exist in namespace ''CoreLibrary'' new CoreLibrary.ClassNet45();

¿Qué debería cambiar para permitir que mi proyecto de prueba de unidad compile y pruebe las características específicas de .NET 4.5?


Parece que hay un error en las herramientas de Visual Studio para .NET Core. Cuando hace referencia al proyecto multi-framework desde otro, Visual Studio solo toma el primer framework listado de una lista (en su caso, "netstandard1.0") y trata ese proyecto referenciado como único para este framework. Sin embargo, el compilador maneja esto correctamente, y si bien parece que el proyecto se crea correctamente, en realidad no es así. Por otro lado, cuando usa la definición de ClassNet45 , parece que no se compila (Visual Studio muestra errores), realmente se compila correctamente.

Parece que las herramientas de Visual Studio para .NET Core aún no están lo suficientemente pulidas, pero probablemente este error se resuelva en un futuro cercano.