Я пытаюсь преобразовать этот код C# для работы в MSBuild:Как я могу назвать конструктор, определенный в C# из MSBuild?
var uri = new Uri(s1);
var result = uri.MakeRelativeUri(new Uri(s2)).ToString();
Я не совсем уверен, как вы бы назвали Uri
конструктор из MSBuild, хотя. Вот то, что я до сих пор:
<PropertyGroup>
<!-- <FirstUri>???</FirstUri>
<SecondUri>???</SecondUri> -->
<RelativeUri>$(FirstUri.MakeRelativeUri($(SecondUri)))</RelativeUri>
<AsString>$(RelativeUri.ToString())</RelativeUri>
</PropertyGroup>
Как вы можете видеть, я закомментировал FirstUri
и SecondUri
фрагменты, потому что я не мог понять, как заставить их работать. Я пробовал new Uri($(FirstString))
, но это просто заставило его занять буквальное значение s1 (например, "new Uri(C:\Users)"
).
Как я могу заставить это работать? Любая помощь будет оценена, спасибо!
редактировать: Ну, похоже, это не представляется возможным из прямого MSBuild. Я принял ответ Марка Арнотта о создании пользовательской задачи MSBuild, хотя я не думаю, что сделаю это сам.
Возможно, если вы работаете на Windows, только для клиентов, вы могли бы сделать что-то вроде этого:
<Exec Command="powershell '(New-Object [System.Uri] ...'" />
Я немного колеблющимся, чтобы начать совершенно новый процесс только для создания относительных путей, хотя, так что бит разбойника.
Вы не должны называть людей ленивыми, если хотите получить от них ответ. Вы должны предоставить код, необходимый кому-то, чтобы ответить на вопрос, а не ссылку на код. –
@MiguelAlexandre Извините, я просто старался быть юмористическим. Соответственно, я отредактировал свое сообщение, извинившись за путаницу. –