В отношении этого предыдущего вопроса я пытаюсь создать пакетный файл, который как часть должен удалить и добавить ссылку на XML * .csproj файл. Я просмотрел этот , этот , этот и этот предыдущий вопрос, но как Powershell n00b я не могу заставить его работать (поэтому далеко).
Кто-нибудь может мне помочь со следующим? Я хочу удалить две конкретные ссылки в файле VS2010 csproj (XML) и добавить новую ссылку.
Я открыл csproj, и ссылку можно найти по следующему адресу
{AAB784E4-F8C6-4324-ABC0-6E9E0F73E575} SomeProject {B0AA6A94-6784-4221-81F0-244A68C374C0} AnotherProject В основном я хочу:
- удалить эти две ссылки
- вставить новую ссылку на предварительно скомпилированную DLL, указанную относительным путем
- ИЛИ Добавить расположение ссылки на сборку в проект, заданный относительным путем
В качестве очень простого примера я попробовал следующий сценарий PowerShell для удаления всех узлов ProjectReference. Я передаю путь к csproj в качестве аргумента. Я получаю сообщение об ошибке
Невозможно проверить аргумент «XML». Аргумент равен нулю или пуст
. Я могу подтвердить, что загружает csproj и сохраняет его на месте без изменений, поэтому путь правильный.param($path) $MsbNS = @{msb = 'http://schemas.microsoft.com/developer/msbuild/2003'} function RemoveElement([xml]$Project, [string]$XPath, [switch]$SingleNode) { $xml | Select-Xml -XPath $XPath | ForEach-Object{$_.Node.ParentNode.RemoveAll()} } $proj = [xml](Get-Content $path) [System.Console]::WriteLine("Loaded project {0} into {1}", $path, $proj) RemoveElement $proj "//ProjectReference" -SingleNode # Also tried # RemoveElement $proj "/Project/ItemGroup/ProjectReference[@Include=`'..\SomeDirectory\SomeProjectFile.csproj`']" -SingleNode # but complains cannot find XPath $proj.Save($path)
Что я делаю не так? Любые комментарии / предложения приветствуются :)