Группа свойств MSBuild Access объявлена в объекте за пределами
У меня проблема с доступом к PropertyGroup, которая объявлена внутри цели.
Сообщение внутри Target правильно публикует номер версии. Когда я пытаюсь опубликовать VersionNumber и VersionInfo, я могу видеть только правильное значение для VersionInfo как true, но VersionNumber отображается в виде пустой строки. Я хочу, чтобы значение VersionNumber также публиковалось здесь
Пожалуйста помоги!
Ниже мой кодовый файл:
<PropertyGroup >
<FileLocation>C:\Dev\version.txt</FileLocation>
<VersionInfo>false</VersionInfo>
<VersionInfo Condition="Exists('C:\Dev\version.txt')">true</VersionInfo>
</PropertyGroup>
<Target Name="ReadFromFile">
<ReadLinesFromFile File="$(FileLocation)" >
<Output PropertyName="VersionNumber"
TaskParameter="Lines"/>
</ReadLinesFromFile>
<Message Text="Inside Target (Version Number) : $(VersionNumber)"/>
</Target>
<ItemDefinitionGroup>
<PreBuildEvent>
<Command>
echo VersionNumber: $(VersionNumber)
echo VersionInfo: $(VersionInfo)
</Command>
</PreBuildEvent>
</ItemDefinitionGroup>
1 ответ
Я нашел решение для моей проблемы. Даже я мог удалить весь Target-ReadfromFile и мог читать содержимое текстового файла в самой группе свойств. Я использовал функцию свойства - System.IO.File::ReadAllText, чтобы добиться своей функциональности. Оказалось простое решение
Более подробную информацию о функциях собственности можно найти здесь
Теперь мой код выглядит так:
<PropertyGroup >
<FileLocation>C:\Dev\version.txt</FileLocation>
<VersionInfo>false</VersionInfo>
<VersionInfo Condition="Exists('C:\Dev\version.txt')">true</VersionInfo>
<VersionDetails>$([System.IO.File]::ReadAllText($(FileLocation)))</VersionDetails>
</PropertyGroup>
Теперь я могу получить доступ к свойству VersionDetails в любом месте проекта