Tengo una gran solución y hay muchos archivos * .cs que en realidad ya no pertenecen a mi solución (no incluidos en los archivos csproj). ¿Hay alguna manera de encontrarlos todos y eliminarlos?Eliminar cs-files no utilizados en la solución
Respuesta
Este script de PowerShell debe hacer lo que está buscando. Analiza el archivo de proyecto para obtener los archivos de código incluidos. Luego compara esa lista con los archivos reales en el disco. Los archivos restantes son sus archivos no utilizados/obsoletos.
La secuencia de comandos puede eliminar los archivos no utilizados del disco o colgarlos como eliminaciones en TFS.
<#
.SYNOPSIS
Find and process files in a project folder that are not included in the project.
.DESCRIPTION
Find and process files in a project folder that are not included in the project.
Options to delete the files or to add them as pending deletes for TFS. Use TF.exe to pend the deletes and start the check-in process for the files.
This is necessary when trying to delete files that are not currently included in a Visual Studio project.
.PARAMETER Project
The path/name for the project file.
.PARAMETER VsVersion
The Visual Studio version (10, 11, 12). Used to locate the tf.exe file.
.PARAMETER DeleteFromDisk
Just delete the files from disk. No interaction with any source control.
.PARAMETER TfsCheckin
After pending the deletes, open the check-in dialog.
#>
[CmdletBinding()]
param(
[Parameter(Position=0, Mandatory=$true)]
[string]$Project,
[Parameter(Mandatory=$false)]
[ValidateRange(10,12)]
[int] $VsVersion = 12,
[switch]$DeleteFromDisk,
[switch]$TfsCheckin
)
$ErrorActionPreference = "Stop"
$tfPath = "${env:ProgramFiles(X86)}\Microsoft Visual Studio $VsVersion.0\Common7\IDE\TF.exe"
$projectPath = Split-Path $project
if($Project.EndsWith("csproj"))
{
$fileType = "*.cs"
}
else
{
$fileType = "*.vb"
}
$fileType
$projectFiles = Select-String -Path $project -Pattern '<compile' | % { $_.Line -split '\t' } | `
% {$_ -replace "(<Compile Include=|\s|/>|["">])", ""} | % { "{0}\{1}" -f $projectPath, $_ }
Write-Host "Project files:" $projectFiles.Count
$diskFiles = gci -Path $path -Recurse -Filter $fileType | % { $_.FullName}
Write-Host "Disk files:" $diskFiles.Count
$diff = (compare-object $diskFiles $projectFiles -PassThru)
Write-Host "Excluded Files:" $diff.Count
#create a text file for log purposes
$diffFilePath = Join-Path $projectPath "DiffFileList.txt"
$diff | Out-File $diffFilePath -Encoding UTF8
notepad $diffFilePath
#just remove the files from disk
if($DeleteFileOnly)
{
$diff | % { Remove-Item -Path $_ -Force -Verbose}
}
else #TFS options
{
#this will add the files as pending deletes in TFS (awaiting check-in)
$diff | % {
[Array]$arguments = @("delete", "`"$_`"")
& "$tfPath" $arguments
}
if($Checkin)
{
#start the check-in process for the pending deletes
[Array]$arguments = "checkin", "/recursive", "$projectPath"
& $tfPath $arguments
}
}
Gracias! Usé este script para crear uno más detallado que incluye otros tipos de archivos y no usa TFS: https://gist.github.com/mcliment/d9008a9288cea9d088af –
Yo también usé este archivo así como @ MarcCliment's para crear otra secuencia de comandos de PowerShell que toma un archivo .sln en lugar de un único archivo proj. Elimina todos los archivos excluidos de todos proyectos en la solución provista. ¡Compruébalo! http: // g oo.gl/PdR9Fg – mikesigs
Uso el script modificado de @mikesigs, funciona como un hechizo, excepto que muestra erróneamente algunos archivos como inactivos de una aplicación WPF (los archivos XAML). – Roemer
Cuando selecciona el proyecto en el explorador de soluciones, haga clic en el botón "Mostrar todos los archivos" en la barra de herramientas del explorador de soluciones. Esto le mostrará los archivos y carpetas en el directorio del proyecto, pero que no están incluidos en el proyecto. Esto le permite eliminarlos o leerlos en el proyecto.
No conozco una solución automatizada, por lo que tendrías que hacer esto para cada proyecto manualmente.
Sí, Conozco esa solución, pero mi proyecto es muy GRANDE, así que estoy buscando algo para automatizar esto :-( – Nagg
Uso de Visual Studio para añadir todos los archivos de control de código fuente. Solo agregará archivos que son parte de un proyecto para que no se agreguen los archivos que no son de proyecto. A continuación, puede simplemente confirmar todos los archivos y verificar el proyecto en otro lugar. Solo se revisarán los archivos relevantes en la ubicación de destino.
Dado que tiene un proyecto grande, por supuesto, no es probable que todavía no tenga algún tipo de control de fuente, por lo que puede tener que interrumpir la conexión existente, borrar la ubicación de origen original después del pago a la nueva ubicación, copie el destino al original y deje que los originales scm detecten la eliminación del archivo en el original y envíe la eliminación.
- 1. asp.net eliminar httpmodules no utilizados
- 2. Buscar recursos no utilizados en una solución .NET
- 3. Eliminar espacios de nombres no utilizados de la salida DataContractSerializer
- 4. Eliminar imágenes de productos no utilizados en magento
- 5. Argumentos no utilizados en R
- 6. ¿Cómo eliminar objetos no utilizados de un repositorio de git?
- 7. Buscar css no utilizados
- 8. ¿Cuál es la forma de borrar los activos no utilizados?
- 9. Dojo 1.7 creación personalizada - Cómo eliminar archivos no utilizados de la carpeta de lanzamiento
- 10. La manera más fácil de detectar/eliminar `declaraciones use` no utilizados de PHP código base
- 11. definiendo parámetros no utilizados en C
- 12. Eliminación de factores no utilizados de una faceta en ggplot2
- 13. Identificación de clases/controles/páginas no utilizados
- 14. ¿Cómo verificar si hay miembros no utilizados en struct?
- 15. ggplot2 mantienen los niveles no utilizados barplot
- 16. ASP.NET/VS2010 Búsqueda de archivos no utilizados en el proyecto
- 17. Eliminar la memoria de la variable no utilizada en java
- 18. Cómo encontrar y eliminar paquetes Delphi no utilizados de un proyecto
- 19. Delphi: cómo eliminar automáticamente vars no utilizados ("Variable 'x' se declara pero nunca se usa" sugerencia)
- 20. usings no utilizados a través de todo el montaje
- 21. Encontrar los archivos jar no utilizados utilizados en un proyecto de eclipse
- 22. Datastructures utilizados en DBMS
- 23. netbeans: cómo determinar los JAR no utilizados?
- 24. paquete.json generación/npm paquetes no utilizados
- 25. Cómo encontrar y eliminar archivos de clase no utilizados de un proyecto
- 26. clases "no utilizados" se pondrá a disposición en Delphi XE
- 27. aclaración de la recolección de elementos no utilizados de PHP
- 28. Identificación de objetos no utilizados en Microsoft SQL Server 2005
- 29. Cómo evitar que IntelliJ IDEA elimine paquetes no utilizados?
- 30. Prioridad en Go, seleccione la solución de la solución
¿Quiere decir que los archivos están en el disco, pero no están incluidos en ningún proyecto y desea eliminarlos del disco? ¿O quiere decir que están incluidos en su solución, pero las clases nunca se usaron? – Ray
Las clases no utilizadas se pueden encontrar usando Resharper: http://stackoverflow.com/questions/4646174/resharper-find-all-unused-classes pero no estoy seguro de si eso es lo que estás preguntando. – Ray
posible duplicado de [macro de Visual Studio: buscar archivos que no están incluidos en el proyecto?] (Http://stackoverflow.com/questions/2000197/visual-studio-macro-find-files-hat-arent-included- en el proyecto) – Ray