Tengo Visual Studio 2019 Community Edition
Pasos para reproducir:
Cargo VS y empiezo un nuevo proyecto de biblioteca estándar C# .Net. Voy a Nuget Pkg Manager e instalo CUALQUIER paquete nuget. Agrego una sola línea a Class1.cs para usar un Tipo del paquete.
Por ejemplo, si instalo el paquete nuget de WatsonTCP, cambio Class1.cs para que se vea así:
using System; using WatsonTcp; namespace NugetTest { public class Class1 { public Class1() { WatsonTcpClient client = new WatsonTcpClient("", 0); } } }Presioné Reconstruir solución. Compruebo la carpeta bin/Debug y ninguno de los dlls para el paquete nuget está allí. Lo mismo con bin/Release para una versión de lanzamiento.
He superado tantos problemas de SO como he podido. He leído la documentación de MSDN en nuget.
Establecí la configuración de compilar y ejecutar MSBuild en detallada. En el registro de compilación, veo algo como el siguiente resultado para cada dll :
Primary reference "WatsonTcp, Version=2.0.7.0, Culture=neutral, PublicKeyToken=null". Resolved file path is "C:\Users\James\.nuget\packages\watsontcp\2.0.7\lib\netstandard2.0\WatsonTcp.dll". Reference found at search path location "{HintPathFromItem}". This reference is not "CopyLocal" because at least one source item had "Private" set to "false" and no source items had "Private" set to "true".Supongo que este aviso sobre CopyLocal es la razón por la que no se genera nada en la carpeta de compilación. Pero no estoy 100% seguro.
SO contiene principalmente preguntas más antiguas que pertenecen a la era anterior a la "referencia del paquete" antes de .Net Core y .Net Standard. Como resultado, cada vez que busco problemas relacionados con "CopyLocal", obtengo información sobre cómo configurar la propiedad CopyLocal explícitamente en una referencia de DLL. No encuentro nada útil para solucionar mi problema con la determinación automática de CopyLocal por el sistema Package Reference y RAR.
¿Alguien puede ayudar?
Abra su xx.csproj ( en VS, haga doble clic en el nombre del proyecto en el Explorador de soluciones, o haga clic con el botón derecho en project=>unload=>edit... ) y agregue la propiedad CopyLocalLockFileAssemblies en él, establezca su valor en true y lo hará copie todos sus ensamblajes de paquetes nuget a la carpeta de salida durante el proceso de compilación.
<PropertyGroup> <TargetFramework>netstandard2.0</TargetFramework> <!--Add this line--> <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies> </PropertyGroup> Y si tiene demasiados paquetes nuget en su proyecto y solo quiere una parte de ellos, intente usar PrivateAssets="All" para evitar que VS copie el especificado en la carpeta de salida.
<PropertyGroup> <TargetFramework>netstandard2.0</TargetFramework> <!--Add this line to copy everything.--> <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies> </PropertyGroup> <ItemGroup> <PackageReference Include="log4net" Version="2.0.8" /> <PackageReference Include="Newtonsoft.Json" Version="12.0.3-beta1" /> <PackageReference Include="WatsonTcp" Version="2.0.7" PrivateAssets="All"/> </ItemGroup> Por ejemplo: el uso de la secuencia de comandos anterior copiará log4net y NewTonSoft.Json pero no WatsonTcp en la carpeta de salida. Para obtener más detalles, consulte github/dotnet/sdk#2235 .