Cmd скрипт для установки hintpath в проектах .net - PullRequest
0 голосов
/ 30 августа 2011

Я пытаюсь, без особой удачи, создать файл bat или cmd, который изменит «испорченный» hintpath моих dll-файлов третьей стороны, чтобы он ссылался на мой фиксированный путь dll (P-диск). Скрипт должен был бы: 1) перебрать все папки в моей главной папке проектов и найти все файлы с окончанием .csproj 2) перебрать каждый файл и заменить каждый экземпляр « c: \ xx \ yy \ q.dll » на « P: \ q.dll »

спасибо,

С уважением, styrmir

1 Ответ

2 голосов
/ 30 августа 2011

Если возможно, я бы настоятельно рекомендовал использовать 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-переключатель , который не позволяет сценарию вносить какие-либо изменения, а просто выводит действияон будет работать в окне консоли.Удалите его, чтобы сделать скрипт работоспособным.

ОБНОВЛЕНИЕ

Чтобы заменить все возможные HintPath ссылку на q.dll в пределах C:, на любой возможной глубине каталога вы можете заменить эту строку:

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

на эту:

$_ -replace '\<HintPath\>C:\\.*\\q.dll\</HintPath\>', '<HintPath>P:\q.dll</HintPath>'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...