2011-08-30 4 views
0

내 타사 DLL의 "손상된"힌트 경로를 변경하는 박쥐 또는 cmd 파일을 만들려 고 노력하고 있습니다. 따라서 고정 된 dll 경로로 되돌아갑니다. (P 드라이브). 스크립트는 다음과 같습니다. 1) 내 프로젝트 폴더 아래의 모든 폴더를 반복합니다. .csproj가 끝나는 모든 파일을 찾으십시오. 2) 각 파일을 반복하고 "< HintPath> c : \ xx \ yy \ q의 모든 인스턴스를 바꿉니다. .DLL </HintPath> <이 HintPath> P "를": \ q.dll </HintPath> ".net 프로젝트에서 힌트 경로를 설정하는 Cmd 스크립트

덕분에,

관련, styrmir

답변

2

가능한 경우를, 내가보기 엔 사용 제안 PowerShell이 작업을 수행 할 수 있습니다.

Get-ChildItem -Recurse -Filter *.csproj -Path YOUR_TARGET_ROOT_DIRECTORY_HERE | 
    ForEach-Object { 
     (Get-Content $_.FullName) | 
     ForEach-Object { 
      $_.Replace('<HintPath>c:\xx\yy\q.dll</HintPath>', '<HintPath>P:\q.dll</HintPath>') 
     } | 
     Set-Content $_.FullName -WhatIf 
    } 

참고 : 여기가 후 무엇을 할 걸릴 것입니다 나는이 변화를 확인하기 위해 스크립트를 방지 전환 -whatIf 포함하고 그냥 콘솔에 수행 할 작업을 출력 창문. 스크립트를 작동 시키려면 제거하십시오.

UPDATE 것은

C에서 q.dll에 가능한 모든 HintPath 참조 교체하려면이 하나

$_.Replace('<HintPath>c:\xx\yy\q.dll</HintPath>', '<HintPath>P:\q.dll</HintPath>') 

:, 가능한 모든 디렉토리 깊이를,이 라인을 대체 할 수 있습니다 :

$_ -replace '\<HintPath\>C:\\.*\\q.dll\</HintPath\>', '<HintPath>P:\q.dll</HintPath>' 
+0

t 대답에 대한 행크스. 나는 powershell을 사용하여 이것을 시도 할 것이다. 호기심에서 벗어나 \ xx \ yy가 다른 길이의 와일드 카드가되도록 제안 된 스크립트를 변경하는 방법을 알고 있습니까? 즉, 일부 경로는 c : \ xx \ yy \ q.dll 일 수 있고 다른 경로는 c : \ zz 일 수 있습니다 \ rr \ mm \ dd \ o.dll? – styrmiro

+0

안녕하십니까. 새로운 답변과 일치하도록 답장을 업데이트했습니다. –

관련 문제