Советы по запуску perl в VS2013 / VS2019 Post Build Event - PullRequest
1 голос
/ 09 июля 2020

У меня еще нет тестового примера для этого, и я все еще копаюсь. Я создал отличный скрипт для редактирования бинарных файлов perl, который аннотирует некоторые бинарные сборки, являющиеся результатом работы собственного компилятора, который мы используем. Я хочу, чтобы эта обратная аннотация была сделана на этапе пост-сборки. Когда я запускаю сценарий в PowerShell для двоичных файлов, он работает нормально. Когда я запускаю его как событие пост-сборки, он вылетает с:

1>  Perl5LIB is   C:/StrawberryPerl/perl/site/lib;C:/StrawberryPerl/perl/vendor/lib;C:/StrawberryPerl/perl/lib
1>  Invalid type 'Q' in pack at C:/StrawberryPerl/perl/lib/Config_heavy.pl line 1354.
1>  Compilation failed in require at C:/StrawberryPerl/perl/lib/Config.pm line 80.
1>  BEGIN failed--compilation aborted at C:/StrawberryPerl/perl/lib/Tie/RefHash.pm line 109.
1>  Compilation failed in require at C:/StrawberryPerl/perl/lib/Fatal.pm line 9.
1>  BEGIN failed--compilation aborted at C:/StrawberryPerl/perl/lib/Fatal.pm line 9.
1>  Compilation failed in require at C:/StrawberryPerl/perl/lib/parent.pm line 16.
1>  BEGIN failed--compilation aborted at C:/StrawberryPerl/perl/lib/autodie.pm line 6.
1>  Compilation failed in require at C:\APPSWARE\SuperMuxDummyDutTC\LogicDDRDLL\..\SmuxFixer.pl line 7.

До сих пор я обнаружил, что @ IN C в среде Visual Studio не настроен так же, как среда PowerShell. ... поэтому я определил PERL5LIB, и теперь он собирает и сообщает тот же @ IN C, что и в PowerShell ... но явно что-то другое отличается. (Я бы тоже добавил% 25PATH% 25, ​​но на данный момент он содержит строки, которые мне нужно проверить).

Просто интересно, есть ли другие, использующие Perl скрипты в событиях пост-сборки и есть ли у них указатели по уходу за ними и кормлению. Мы поставляем версию Perl с нашим дистрибутивом программного обеспечения, которая отличается от Strawberry Perl, поэтому я должен покопаться и посмотреть, нет ли других вещей, указывающих на разные perls et c.

Я постараюсь обновить это, когда узнаю больше.

1 Ответ

1 голос
/ 09 июля 2020

Я определил, что проблема связана с $ PATH. Наше программное обеспечение отслеживает две переменные среды $ PATH: типичный% PATH% и еще одну переменную для Visual Studio, которая хранится (или использовалась) в реестре. Наши обновления программного обеспечения изменяют выпуск, так что все наши файлы * .exe и наши пакеты * .dll могут быть найдены средой выполнения и Visual Studio, когда пользователи меняют выпуски.

Мы распространяем версию perl с нашим В моем случае эта perl была слишком старой, поэтому я использовал последнюю версию Strawberry Perl. Когда мы переключаем выпуски, мы определяем, существует ли альтернативный perl, и спрашиваем, хочет ли пользователь, чтобы эта версия была помещена первой в% PATH%.

Я, должно быть, не смог этого сделать. И по какой-то причине в StrawBerry Perl существует зависимость, привязанная к% PATH%, а не к @ IN C. Я также обнаружил, что установка PERL5LIB явного указания на путь StrawBerryPerls @ IN C нарушит наш код подкачки релизов. На данный момент я не хочу вдаваться в подробности, почему. Вкратце, я считаю, что это была проблема% 25PATH% 25.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...