Есть ли свойство MSBuild, обеспечивающее корень хранилища? - PullRequest
1 голос
/ 24 мая 2019

При запуске из Visual Studio MSBuild присваивается макрос / свойство $(SolutionDir). При запуске из DevOps Azure это свойство не существует (по праву так).

Azure DevOps имеет переменную Build.SourceBranch, которую можно передать в MsBuild как свойство. Эта переменная лучше, потому что она указывает непосредственно на корень хранилища, в то время как $(SolutionDir) может указывать на подкаталог, если решение не в корне.

Существует ли согласованное свойство MsBuild, которое я могу использовать как в Visual Studio, так и в DevOps Azure, которое может указывать на корень хранилища?

Одним из способов достижения этого является наличие файла Directory.Build.props в корне хранилища и указание свойства <RepositoryRoot>$(MSBuildThisFileDirectory)</RepositoryRoot>, однако одно имеющееся у меня ограничение не позволяет мне сделать это.

1 Ответ

1 голос
/ 24 мая 2019

Краткий ответ: Нет, по умолчанию в MSBuild отсутствует понимание систем управления исходным кодом.

Файл Directory.Build.props, вероятно, является наиболее надежным подходом, который отображается независимо от построения решения или отдельных проектов.поскольку он остается неизменным независимо от системы VCS, которую вы используете или переносите в / из.

Другие подходы должны были бы жестко кодировать структуру VCS, например, поиск каталога, содержащего файл .gitignore (который не будет работать, если вы не используете такой файл):

<PropertyGroup>
  <RepoRoot>$([System.IO.Path]::GetDirectoryName($([MSBuild]::GetPathOfFileAbove('.gitignore', '$(MSBuildThisFileDirectory)'))))</RepoRoot>
</PropertyGroup>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...