vscode visual studio nuggets manager instalar como code visual-studio version-control nuget

visual-studio - nuggets - visual studio code nuget



Evite tener que agregar NuGet.exe al control de origen (3)

Acabo de comprobar: nuget.targets es un archivo de msbuild. Y estabas en el camino correcto, en:

<DownloadNuGetExe Condition=" ''$(DownloadNuGetExe)'' == '''' ">false</DownloadNuGetExe>

Cambiar el valor a verdadero:

<DownloadNuGetExe Condition=" ''$(DownloadNuGetExe)'' == '''' ">true</DownloadNuGetExe>

Pero debe reiniciar Visual Studio o volver a cargar la solución (ver comentarios) después de esto para que tenga efecto.

Algún contexto:
Seguí el tutorial sobre el uso de NuGet sin comprometer paquetes con cierto éxito. Después de solucionar este problema NuGet agregando manualmente <RestorePackages> y un <Import ...> para el archivo nuget.targets, las cosas funcionaban.

Sin embargo, una vez que cloné el repositorio con Mercurial, obtuve el siguiente error al construir:

No se puede ubicar ''C: / ... / Visual Studio 2010 / Projects / MyProject / .nuget / nuget.exe''

Esto tiene sentido, porque mi patrón de ignorarme me impidió verificar el archivo exe. De esta pregunta SO relacionada deduje que no es raro tener este archivo en control de versiones (¿o no?), Pero realmente prefiero no asignar NuGet.exe al control de versiones si puedo evitarlo.

Pregunta: ¿Existe una manera conveniente de evitar la necesidad de verificar en NuGet.exe?

Probé un poco de Google-fu, revisé la documentación y jugué con el archivo NuGet.targets, sin suerte hasta ahora. Parece preferible si pudiera apuntar dinámicamente al NuGet.exe del entorno particular que está creando la solución.

Sé que podría simplemente agregar el archivo exe, pero preferiría saber si hay otras formas de manejar esto o saber por qué no hay alternativas viables.

Actualizar:
El archivo nuget.targets contiene algunos xml relevantes:

<!-- only (relevant) parts of the xml shown below --> <DownloadNuGetExe Condition=" ''$(DownloadNuGetExe)'' == '''' ">false</DownloadNuGetExe> ... <UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)/Microsoft.Build.Tasks.v4.0.dll"> <Task> <Code Type="Fragment" Language="cs"> <![CDATA[ try { OutputFilename = Path.GetFullPath(OutputFilename); Log.LogMessage("Downloading latest version of NuGet.exe..."); WebClient webClient = new WebClient(); webClient.DownloadFile("https://nuget.org/nuget.exe", OutputFilename); return true; } catch (Exception ex) { Log.LogErrorFromException(ex); return false; } ]]> </Code> </task> </UsingTask>

No estoy familiarizado con el funcionamiento de los archivos .targets, pero esto parece estar en la línea de lo que estoy buscando. Con mi sombrero de codificación de cowboy probé cambiando el false a true en el elemento DownloadNuGetExe, pero esto no funcionó como se esperaba (con o sin el atributo de condición).


En cuanto a ese archivo .targets , hay otra manera de hacerlo si no desea comprobar NuGet.exe , ni descargarlo cada vez. La línea clave es esta:

<NuGetExePath Condition=" ''$(NuGetExePath)'' == '''' ">$(NuGetToolsPath)/nuget.exe</NuGetExePath>

Siguiendo la convención de MSBuild de solo establecer propiedades si aún no han sido definidas, este valor se establece de manera predeterminada en la copia local de la solución de NuGet.exe , descargándola si la propiedad DownloadNuGetExe es true . Pero las propiedades de MSBuild pueden ser anuladas por variables de entorno.

Si ya descargó NuGet en una ubicación central, puede dejar DownloadNuGetExe en false y definir una variable de entorno llamada NUGETEXEPATH , que se usará en su lugar.


Habilitar la restauración del paquete NuGet

Haga clic derecho en la solución y luego seleccione Activar restauración de paquete NuGet