У меня есть решение, состоящее из разных проектов с другого пути. Мы используем проекты фундамента из папки ванили, а затем проектируем конкретные проекты из определенного каталога. Пример:Получить каталог решений в VS файл профиля публикации
specific project directory: c:\proj\specific
vanilla project directory: c:\proj\vanilla
vanilla project x path: c:\proj\vanilla\repo\src\project\x\code\
В каждом ванильным проекте имеем а опубликовать профиль, который указывает на корневой каталог и включает в себя файл publishsettings.targets, который имеет реальную цель, когда проект должен быть опубликован. Используя эту структуру, мы можем иметь много проектов и публиковать их с использованием единой цели, поэтому нам не нужно менять эту цель во всех проектах.
Мы обнаружили, что у нас есть проблема при использовании этих проектов ванили, поскольку путь, используемый в профиле публикации, относится к ванильному каталогу, и нам действительно нужно, чтобы он относился к конкретной директории проекта (директории решений).
В нашей публикации профиле мы имеем:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\..\..\..\..\publishsettings.targets" />
<PropertyGroup>
...
</PropertyGroup>
</Project>
Поэтому нам нужен способ, чтобы определить фактическую Sln каталога на этот путь, чтобы мы могли включить правильную цель так, когда мы делаем публиковать от визуальной студии она будет публиковать на конкретный проект, а не ванильный.
Я попытался найти «MSBuildSolutionDirectory», но это, похоже, является переменной «MSBuildProjectDirectory», которая может быть использована.
Кто-нибудь знает, как я мог бы получить путь
Project="c:\proj\vanilla\publishsettings.targets"
на самом деле быть
Project="c:\proj\specific\publishsettings.targets"
с помощью некоторых MSBuild или пользовательскую переменную, а не жестко прописывать его?
Мне нужно, чтобы он работал как с ванилью (так как у меня есть vanilla.sln), а также с конкретным проектом (как у меня есть X.sln).
Как я могу видеть из Вашего комментария, он ищет в каталоге, и, как я сказал, что конкретный SLn не в том же пути к каталогу с ванильными проектами поэтому он никогда не найдет * .sln файла с момента этот файл находится в каталоге c: \ proj \ specific \ specific.sln, а проекты с ванилью находятся в каталоге c: \ proj \ vanilla \ поэтому не уверены, поможет ли это решение. –
Каковы пути к vanilla.sln и X.sln? Я предполагаю, что вы заметили, что функция ищет выше, а не внутри, в каталоге проекта и направлена на то, чтобы вы нашли директорию решений (о которой вы говорите, что хотите надеяться). – weir