visual studio solución solucion revirtiendo restaurar proyecto por para paquetes paquete ningun los guardó guarde error encuentra correctamente cambios antes admitido administrar nuget

studio - ¿Por qué NuGet agrega app.config con assemblyBinding a los proyectos de LIBRARY durante una actualización del paquete de NuGet?



restaurar paquetes nuget visual studio 2017 (2)

¿No es esta información necesaria solo en el proyecto del ejecutable?

¿Cómo deshabilitar la creación de este archivo?

NuGet 2.8

EDITAR

Los proyectos de biblioteca fueron excepciones en NuGet 2.7, el comportamiento cambió en 2.8 al solucionar este problema: http://nuget.codeplex.com/workitem/3827 con confirmación: https://github.com/NuGet/NuGet2/commit/448652d028e3f01ba4022e147baaf4e1fb3f969b


Creé una pequeña aplicación de consola que verifica toda la fecha de los archivos app.config y luego los borra automáticamente de su archivo .csproj y del archivo. Todo: borrar de tfs. Quizás esto pueda ayudar.

class Program { private static string RootFolder; private static string AppConfigName; private static bool AskConfirmation = true; static void Main(string[] args) { try { AppConfigName = "app.config"; RootFolder = @"<Your project path>"; ScanDir(RootFolder); Console.WriteLine(); Console.WriteLine("DONE!"); Console.WriteLine("Press ENTER to finish..."); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } private static void ScanDir(string directoryParent) { var dirs = Directory.GetDirectories(directoryParent); foreach (var dir in dirs) { var dirInfo = new DirectoryInfo(dir); if (dirInfo.Name == "bin" || dirInfo.Name == "obj" || dirInfo.Name == "debug" || dirInfo.Name == "tempPE" || dirInfo.Name == "java" || dirInfo.Name == "res") continue; var files = Directory.GetFiles(dir, "app.config"); if (files.Length == 0) { ScanDir(dir); continue; } Process(dir); //ScanDir(dir); } } private static void Process(string dir) { var fi = new FileInfo(Path.Combine(dir, AppConfigName)); if (fi.CreationTime.Date != DateTime.Now.Date) return; if (AskConfirmation) { Console.WriteLine("Scan " + dir.Replace(RootFolder, "")); Console.Write("Remove (y)es or (n)o ?"); var key = Console.ReadKey(); Console.WriteLine(); if (key.Key.ToString() =="Y") // remove app.config RemoveAppConfig(dir, fi); } else RemoveAppConfig(dir, fi); } private static void RemoveAppConfig(string dir, FileInfo fi) { var csProjs = Directory.GetFiles(dir, "*.csproj"); foreach (var csProj in csProjs) { var txt = File.ReadAllText(csProj); txt = Regex.Replace(txt,"<None Include=/"App.Config/" />", "",RegexOptions.IgnoreCase); File.Delete(csProj); File.WriteAllText(csProj, txt); } File.Delete(fi.FullName); // todo: undo in tfs Console.WriteLine("Deleted"); } }


Los redireccionamientos de enlace de ensamblaje son tan válidos en una biblioteca de clases como en proyectos ejecutables.

Piensa sobre esto; al crear su aplicación, ¿cómo sabrá el compilador qué versión de los ensamblados referenciados usar (para las bibliotecas de clases)?

A menudo, esto funcionará bien, sin las redirecciones, pero cuando tropieza con una máquina que tiene una versión de GAC del ensamblaje, podría tener problemas.

Le sugiero que lea la documentación de redireccionamiento de enlace de ensamblaje para comprender mejor qué es y qué hace.

NuGet agrega el app.config con redirecciones para ayudarlo, y francamente, no me da cuenta de un app.config adicional para que todo funcione como se espera.

A partir de hoy, agregará redirecciones a todos los proyectos, excepto los siguientes tipos:

  • WiX
  • JS
  • Nemerle
  • C ++
  • Synergex
  • Estudio visual
  • Aplicación de la tienda de Windows

Que yo sepa, no hay manera de apagar esto. Podría crear un problema en Github si esto es un problema.

El código fuente para agregar redirecciones de enlace de ensamblaje se puede encontrar here .