uaeh tramites titulaciones servicios organigrama enlaces dependencias biblioteca avisos archivo .net c++ visual-studio-2010

.net - tramites - uaeh titulaciones avisos



En Visual Studio 2010, ¿por qué se creó el archivo.NETFramework, Versión=v4.0.AssemblyAttributes.cpp, y puedo deshabilitarlo? (6)

Cerrar VS

Abra cada archivo .vbproj con el bloc de notas y elimine la siguiente línea: <TargetFrameworkProfile />

Se acabó !

Recientemente me actualicé a Visual Studio 2010. Ahora, cuando compilo proyectos, obtengo una línea que dice:

1> .NETFramework,Version=v4.0.AssemblyAttributes.cpp

Aprendí que este es el resultado del nuevo motor de compilación, msbuild.exe, pero este archivo se crea automáticamente y se coloca en mi directorio temporal local (c: / Documents and Settings / me / Local Settings / Temp). ¿Alguien sabe por qué se crea este archivo y si puedo deshabilitar su creación?

Por cierto, no parece tener nada útil en ello, en mi opinión. Vea abajo:

#using <mscorlib.dll> [assembly: System::Runtime::Versioning::TargetFrameworkAttribute(L".NETFramework,Version=v4.0", FrameworkDisplayName=L".NET Framework 4")];

Y ocasionalmente, como se informa en http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/15d65667-ac47-4234-9285-32a2cb397e32 , causa problemas. Así que cualquier información sobre este archivo, y cómo puedo evitar su creación automática, sería muy apreciada. ¡Gracias!


Eche un vistazo a c: / archivos de programa / msbuild / microsoft.cpp / v4.0 / microsoft.buildsteps.targets. Contiene el objetivo GenerateTargetFrameworkMonikerAttribute, que es el que genera el archivo. El elemento Condición determina cuándo se ejecuta, GenerateTargetFrameworkAttribute es el valor. Eso siempre será cierto si la configuración del proyecto solicita una construcción / clr. El comentario en el objetivo es muy engañoso, el alboroto sobre los archivos de encabezado precompilados no tiene nada que ver con el propósito del objetivo.

El [TargetFrameworkAttribute] que genera en el archivo de ayuda .cpp es importante, ya que le indica al CLR en la máquina en la que el programa ejecuta qué versión mínima de .NET debe estar presente para ejecutar el programa con éxito. Su uso principal es iniciar automáticamente el instalador para la versión .NET que se necesita, muy buena característica.

LNK4221 es común y no tiene dientes, puedes ignorarlo. Lamentablemente, el enlazador no proporciona una forma documentada de suprimir las advertencias, el problema básico es que no puede ser lo suficientemente específico para suprimir solo esta. Suprimir el helper .cpp requeriría editar el archivo .targets y rompe la función de instalación automática, no puedo recomendarlo.


El archivo está allí para incrustar el atributo de ensamblado .NET de TargetFrameworkMoniker. Eso es (en el futuro) ayudar a los hosts a funcionar correctamente con el CLR apropiado. (Perdón por la vaguedad, no recuerdo que alguien más sea el experto). Es decir, en realidad hay una razón para ello :-)

No sé por qué hay una advertencia, investigándola.

Dan / MSBuild


En primer lugar, la respuesta de @Bany remedia la condición y emití 4x + 1 para las otras respuestas útiles que ayudaron a un rápido diagnóstico y resolución de un problema que experimenté.

Quería incluir un volcado de un problema que diagnosticé en mi contexto basado en esto.

Esta característica sintetiza un archivo fuente en el lenguaje del proyecto que crea un atributo de assembly: en la secuencia de compilación.

Este archivo / proceso es necesario cuando WAS u otros entornos de alojamiento necesitan poder inferir un marco de destino y otros casos similares. msdn.microsoft.com/en-us/library/dd456789.aspx . Es solo un atributo, por lo que es inerte y no hay mucho de qué preocuparse ...

En los casos en los que no entrará en juego esa confianza, se vuelve más interesante. Además de ser redundante, al hacer binarios más grandes y calentar el procesador, en TeamCity, los procedimientos de limpieza cuando se configuran para construcciones incrementales eliminan este archivo antes de volver a compilarlo. Sin embargo, el efecto secundario desafortunado es que la comprobación de dependencias de la compilación infiere incorrectamente que es necesaria una reconstrucción, como se ilustra en este mensaje de muestra al activar el registro especificando /v:d [etailed]:

[CoreCompile] El archivo de entrada "C: / BuildAgent / temp / buildTmp.NETFramework, Version = v4.0, Profile = Client.AssemblyAttributes.cs" es más nuevo que el archivo de salida "bin / Debug / DLLNAME.xml".

La conclusión es que el CSC se invoca de manera inapropiada (y en nuestro caso hay efectos secundarios significativos a partir de ahí)

Otras notas:

  • Debo buscar en los objetivos de MS para ver si esto solo se aplica a los perfiles de partículas [como se alude en la respuesta de @AlainA] (mi caso específico fue un uso del perfil de cliente .NET 4.0)

  • Como se ilustra en el mensaje anterior, una sutileza que puede estar involucrada es la presencia o ausencia de documentos XML, que es el caso en mi contexto.


Esto es común a todos los idiomas (C #, VB y F # también tienen algo similar).

Una forma de deshabilitarlo es anular el objetivo GenerateTargetFrameworkMonikerAttribute de este modo:

<!-- somewhere after the Import of Microsoft.somelanguage.targets --> <Target Name="GenerateTargetFrameworkMonikerAttribute" />

en su archivo de proyecto.


Resolví este problema con los siguientes pasos:

  1. Limpia la solucion
  2. Cierra la solucion
  3. Escriba el comando de ejecución %temp% , borre todos los archivos
  4. Abra la solución haciendo clic en el archivo de solución del proyecto de la carpeta donde se guardó el proyecto.
  5. Hacer una reconstrucción en uno de los proyectos. Luego cierre Visual Studio 2010 (sí, todo el entorno de desarrollo), y luego vuelva a abrir el archivo de la solución.

    Parece que la reconstrucción, recrea el archivo faltante, pero Visual Studio no lo nota, por lo que tiene que cerrarlo y volver a abrirlo para que vuelva a verlo correctamente.