큰 해결책이 있으며 실제로 더 이상 내 솔루션에 속하지 않는 많은 * .cs 파일이 있습니다 (csproj 파일에 포함되지 않음). 그들 모두를 찾아서 제거 할 방법이 있습니까?솔루션에서 사용되지 않는 cs 파일을 제거하십시오.
답변
이 PowerShell 스크립트는 찾고있는 것을 수행해야합니다. 포함 된 코드 파일을 얻기 위해 프로젝트 파일을 구문 분석합니다. 그런 다음이 목록을 디스크의 실제 파일과 비교합니다. 나머지 파일은 사용되지 않거나 쓸모없는 파일입니다.
스크립트는 디스크에서 사용되지 않는 파일을 삭제하거나 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
}
}
고마워!이 파일을 사용하여 다른 유형의 파일을 포함하고 TFS를 사용하지 않는 더 자세한 스크립트를 만들었다. https://gist.github.com/mcliment/d9008a9288cea9d088af –
또한이 파일과 @ MarcCliment를 사용하여 하나의 proj 파일 대신 .sln 파일을 가져 오는 또 다른 PowerShell 스크립트를 만들었습니다. 모두에서 제외 된 모든 파일을 삭제합니다 프로젝트에서 제공되는 솔루션을 참조하십시오. http : // g oo.gl/PdR9Fg – mikesigs
@mikesigs의 수정 된 스크립트를 사용합니다. 일부 파일을 WPF 응용 프로그램 (XAML 파일)에서 비활성으로 잘못 표시한다는 점을 제외하면 매력처럼 작동합니다. – Roemer
솔루션 탐색기에서 프로젝트를 선택할 때 솔루션 탐색기의 도구 모음에서 "모든 파일 표시"단추를 클릭하십시오. 그러면 프로젝트 디렉토리에 파일 및 폴더가 표시되지만 프로젝트에는 포함되지 않습니다. 이렇게하면 프로젝트를 삭제하거나 프로젝트에 미리 읽을 수 있습니다.
자동화 된 솔루션을 모르므로 각 프로젝트마다 수동으로 수행해야합니다.
예, 나는 그 해결책을 안다. 그러나 나의 프로젝트는 아주 거대하다. 그래서 나는 이것을 자동화 할 무언가를 찾고있다 :-( – Nagg
소스 제어에 모든 파일을 추가하려면 Visual Studio를 사용하십시오. 프로젝트의 일부인 파일 만 추가하므로 프로젝트 파일이 아닌 파일은 추가되지 않습니다. 그런 다음 모든 파일을 커밋하고 다른 곳에서 프로젝트를 확인할 수 있습니다. 관련 파일 만 대상 위치에서 체크 아웃됩니다.
큰 프로젝트를 가지고 있다면 이미 소스 제어가 없으므로 기존 연결을 끊고 새 소스로의 체크 아웃 후 원래 소스 위치를 지워야 할 수 있습니다. 대상을 원본으로 복사하고 원본 scm이 원본에서 파일 제거를 감지하고 제거를 제출하게하십시오.
- 1. 솔루션에서 .cs 파일을 탐색하고 함수가 사용되는지 확인해야합니다.
- 2. HashMaps에서 사용되지 않는 할당 된 메모리를 제거하십시오.
- 3. 사용하지 않는 소스 코드 파일을 제거하십시오.
- 4. Unity 솔루션에서 사용되지 않는 Microsoft.Practices.Unity.Configuration.ContainerElement.Configure 메서드를 바꾸려면 어떻게합니까?
- 5. cs 파일을 분할하고 인터페이스를 만든 다음 다른 프로젝트에 구현을 제거하십시오
- 6. 사용되지 않는 공용 함수 찾기
- 7. 전체 어셈블리에서 사용되지 않은 사용을 제거하십시오.
- 8. 가 session_register - 사용되지 않는
- 9. System.Web.UI.WebControls.Style 사용되지 않는 HTML5
- 10. 사용되지 않는 라이브러리 클래스
- 11. 사용되지 않는 StringBufferInputStream 해당
- 12. 사용되지 않는 방법
- 13. 사용되지 않는 필드는 어떻게됩니까?
- 14. PHP에서 사용되지 않는 코드입니까?
- 15. 사용되지 않는 기능 : require_once를()
- 16. 사용되지 않는 함수 찾기?
- 17. 는 사용되지 않는 코드
- 18. vc2008에서 사용되지 않는 기능을 찾으십니까?
- 19. CS 시트에서 원치 않는 CS 스타일을 어떻게 필터링합니까?
- 20. 솔루션에서 각 C# 파일을 변경하십시오.
- 21. 보이지 않는 컨트롤을 제거하십시오.
- 22. 모노로 cs 파일을 컴파일 하시겠습니까?
- 23. 사이트에서 .cs 파일을 다운로드하려면 어떻게해야합니까?
- 24. 배송 전에 사용하지 않는 리소스를 제거하십시오.
- 25. .cs 파일을 수정 한 후로드 될 때 .cs 파일이 컴파일됩니까?
- 26. 다른 .cs 프로그램에서 디스크의 다른 폴더에있는 .cs 파일을 컴파일하십시오.
- 27. 엄청난 양의 파일을 제거하십시오.
- 28. 보기에서 xib 파일을 제거하십시오.
- 29. 코드베이스에서 쓸모없는 파일을 제거하십시오.
- 30. 프로젝트에서 사용되지 않는 Java 클래스 및 JSP 파일을 찾는 방법
파일이 디스크에 있지만 프로젝트에 포함되어 있지 않다는 것을 의미하고 디스크에서 파일을 삭제 하시겠습니까? 아니면 솔루션에 포함되었지만 클래스가 사용되지 않았 음을 의미합니까? – Ray
사용하지 않는 클래스는 Resharper를 사용하여 찾을 수 있습니다. http://stackoverflow.com/questions/4646174/resharper-find-all-unused-classes하지만 내가 묻는 것은 확실하지 않습니다. – Ray
[Visual Studio 매크로 : 프로젝트에 포함되지 않은 파일 찾기?] (http://stackoverflow.com/questions/2000197/visual-studio-macro-find-files-that-arent-included- in-the-project) – Ray