Saltar al contenido

¿Cómo establecer dependencias cuando utilizo bibliotecas DLL .NET Standard 2.0 con una aplicación de consola .NET Framework?

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:

  1. Borrar PropertiesAssemblyInfo.cs de Client.ConsoleClient. Ya no necesitaremos esto ya que el contenido de ese archivo ahora se incluye en el archivo del proyecto.

  2. 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 referencia Core.Application más tarde.

  3. 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>
    
  4. Vuelva a cargar el proyecto en Visual Studio.

  5. Agregar una referencia a Core.Application y agregue los paquetes de Nuget que necesite.

  6. 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:

ingrese la descripción de la imagen aquí

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *