Solución:
Este es un daño bien conocido y bastante antiguo registrado en GitHub en:
las dependencias no fluyen de nuevas NET Standard
proyecto a proyectos de escritorio antiguos a través del enlace de referencias del proyecto
Una posible solución es agregar el NuGet
dependencia a la Full NET Framework
proyecto, como lo hizo usted.
La otra sugerencia de incluir lo siguiente a la .csproj
archivo de proyecto del Full NET Framework project
también funciona para mí.
<PropertyGroup>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
</PropertyGroup>
Tenga en cuenta que estoy usando referencias de paquetes en el NET Standard
proyectos.
Por ahora, parece que NET Standard
Es mejor consumir proyectos como NuGet
paquetes, ya que estos incluirían referencias dependientes como NuGet
paquetes en el proyecto de destino.
Core.Persistence.csproj referenciando Entity Framework
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.6" />
</ItemGroup>
</Project>
Core.Application.csproj referenciando Core.Persistence
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..Core.PersistenceCore.Persistence.csproj" />
</ItemGroup>
</Project>
ConsoleClient.csproj referenciando Core.Application
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<!-- ... -->
</PropertyGroup>
<PropertyGroup>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
</PropertyGroup>
<!-- ... --->
<ItemGroup>
<ProjectReference Include="..Core.ApplicationCore.Application.csproj">
<Project>{067b3201-3f65-4654-a0fb-e8fae521bf29}</Project>
<Name>Core.Application</Name>
</ProjectReference>
</ItemGroup>
</Project>
El nuevo formato SDK csproj
los archivos no se reproducen muy bien con los archivos de proyecto de formato heredado.
¡Pero no temas, ya que las aplicaciones de consola de .NET Framework pueden usar el formato SDK!
Asegúrese de tener su trabajo comprometido con el control de código fuente, o haga una copia de la carpeta y luego haga lo siguiente:
-
Borrar
PropertiesAssemblyInfo.cs
deClient.ConsoleClient
. Ya no necesitaremos esto ya que el contenido de ese archivo ahora se incluye en el archivo del proyecto. -
Borrar
packages.config
– nuevamente, las referencias de Nuget se almacenarán en el archivo del proyecto – eso es si necesita alguna referencia de Nuget después de que hagamos referenciaCore.Application
más tarde. -
Abierto
Client.ConsoleClient.csproj
en un editor de texto y cambie el contenido a:<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net472</TargetFramework> </PropertyGroup> </Project>
-
Vuelva a cargar el proyecto en Visual Studio.
-
Agregar una referencia a
Core.Application
y agregue los paquetes de Nuget que necesite. -
Si tuvieras algún contenido en
PropertiesAssemblyInfo.cs
que no sean las versiones 1.0.0.0, haga clic con el botón derecho en el proyecto en el Explorador de soluciones y haga clic en Paquete. Agregue los detalles que necesita y luego guarde:
Eso es todo, aunque hay otras 2 cosas que podría necesita hacer dependiendo de sus circunstancias:
-
Si hay archivos que deben excluirse, deberá excluirlos, ya que el nuevo formato del proyecto incluye todos los tipos de archivos relevantes de forma predeterminada.
-
Es posible que deba configurar la versión de idioma. En mi vista previa de Visual Studio 2019,
latest
(la última versión menor de C #) es la predeterminada, por lo que no necesito hacer esto.