En VS 2008, ¿hay alguna manera de establecer el directorio intermedio (donde van los archivos .obj, no los objetivos finales) en un proyecto de C#?Establecer directorio intermedio en C# Project
Respuesta
No lo creo. Sin embargo, puede copiar sus ejecutables, dlls, lo que sea, a otra carpeta en un evento posterior a la construcción. (Pestaña Crear eventos en Propiedades del proyecto)
Debe sobrescribir BaseIntermediateOutputPath msbuild var, más información al respecto here.
Eso funciona en su mayor parte, pero estaba buscando una manera de configurarlo en cada proyecto, por lo que construir desde el IDE no contaminaría la carpeta de origen. Sin embargo, establecer BaseIntermediateOutputPath en el proyecto desencadena una advertencia de seguridad. Por desgracia, esto no parece posible. suspiro... –
La advertencia de seguridad está allí para notificarle que ha sucedido algo fuera de lo común, puede silenciar la advertencia y no volverá a verla hasta que no cambie otra cosa. –
no hay nada fuera de lo común en personalizar la ubicación de salida intermedia. Visual Studio acepta felizmente los proyectos de C++ que personalizan la ubicación de los archivos intermedios (a través de la propiedad IntDir) sin un cuadro de diálogo de advertencia de seguridad, pero hace una rabieta cuando se hace lo mismo en el proyecto de C#. –
Encontré una solución a esto usando Visual Studio Express 2013; Olvidé qué versión de VS presentó MSBuild, y no puedo decir con certeza si funcionará para cualquier otra versión. Pero aquí va:
En C:\Windows\Microsoft.NET\Framework
hay subdirectorios correspondientes a las versiones .NET; Con VSX2013 en mi sistema, la carpeta de interés es v4.0.30319
. (Esa es la versión de .NET utilizada por MSBuild, no la que estoy apuntando). Dentro de esta carpeta están los archivos .targets
, que son colecciones de reglas de MSBuild.
Cerca del comienzo de Microsoft.CSharp.targets
hay algunas reglas que importarán más archivos de reglas. La tercera de estas instrucciones de importación importa desde el archivo nombrado por la variable de compilación CustomBeforeMicrosoftCSharpTargets
. Usted puede ser capaz de averiguar el nombre de esta leyendo las reglas, pero es más fácil añadir un paso de generación de
echo $(CustomBeforeMicrosoftCSharpTargets)
Construir y mirar a la salida. En mi caso, la ruta completa fue
C:\Program Files (x86)\MSBuild\v12.0\Custom.Before.Microsoft.CSharp.targets
NOTA: en mi caso, hay ya una carpeta C:\Program Files (x86)\MSBuild\12.0
pero no era v12.0
.
Así (como administrador) he creado la carpeta y se coloca un archivo Custom.Before.Microsoft.CSharp.targets
que tiene este aspecto:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<BaseIntermediateOutputPath>$(SolutionDir)\Build\$(MSBuildProjectName)</BaseIntermediateOutputPath>
</PropertyGroup>
</Project>
NOTA: $(ProjectName)
no funciona, utilice $(MSBuildProjectName)
.
Cuando construí, los OBJ fueron puestos bajo un directorio de construcción en virtud de la solución, no el marco del proyecto, en un subdirectorio con la convención de nomenclatura típica: Debug
o Release
o x86\Debug
o x64\Release
.
Esto no funcionó exactamente como se deseaba: realmente quería colocar estos en %TEMP%
pero la variable no se expandió, así que terminé con una carpeta de compilación en el proyecto llamado %TEMP%
. Colocar la ruta expandida en la regla funcionaba bien, pero otras subcarpetas de %APPDATA%
fallaron debido a problemas de permisos.
Supongo que esto se puede utilizar para configurar cualquiera de esas variables; leer los archivos predeterminados .TARGETS
es una tarea ardua, pero contiene algunos comentarios útiles.
Una nota más: el enfoque anterior funciona para VS CE 2017. 'CustomBeforeMicrosoftCSharpTargets' tiene un valor de' C: \ Archivos de programa (x86) \ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ v15.0', y de nuevo tuvo que crear la carpeta 'v15.0'; no se requieren cambios en el XML. –
- 1. Directorio virtual en Web Setup Project
- 2. C# Project Global AssemblyInfo
- 3. Establecer Generar directorio de salida en Eclipse - C++
- 4. Problema del directorio raíz del Android Test Project en Eclipse
- 5. C# Project Management con Maven
- 6. Reutilizar C# -Project en el iPad
- 7. Cómo usar Scintilla .NET en C# Project?
- 8. Android Test Project Estructura del directorio al usar Eclipse
- 9. Almacenar archivos eclipse .project fuera del directorio del proyecto
- 10. Elección de un idioma intermedio
- 11. Establecer el directorio de ejecución en Eclipse?
- 12. Perl XS y C++ pasando el puntero al almacenamiento intermedio
- 13. Django Like Admin Project para C# MVC
- 14. Recomendaciones para 'C' Project Architecture Guidelines?
- 15. Copie una parte específica de una imagen de almacenamiento intermedio en otra imagen de almacenamiento intermedio
- 16. Recorte y tamaño de almacenamiento intermedio AudioQueue
- 17. Establecer diferencia en C++
- 18. ¿Cómo establecer el directorio de trabajo para Node.js en Windows?
- 19. Establecer programáticamente un icono personalizado de carpeta/directorio en Linux
- 20. tomcat no entrega el certificado intermedio (https)
- 21. Cómo usar la clase XDocument en SilverLight Project (C#)
- 22. Buscar un directorio en C#
- 23. Escucha de directorio en C#
- 24. Web Deployment Project & TeamCity
- 25. Microsoft Project
- 26. Eclipse Web Project Dependencies
- 27. C# - Establecer permisos de directorio para todos los usuarios en Windows 7
- 28. Contenedor IoC Project-Embedded
- 29. ¿Por qué "python setup.py sdist" crea "PROJECT-egg.info" no deseado en el directorio raíz del proyecto?
- 30. Scheme Project Ideas
+1 para una buena pregunta. Intenté hacer lo mismo por las mismas razones (no contaminar el directorio de origen con el resultado del compilador) y fallé (sin un cuadro de diálogo de advertencia de seguridad, pero eso no es aceptable para mí). –
¿Alguien sabe si esta situación cambió en Visual Studio 2010/.NET4 ...? –