Как восстановить каталог пакетов для проекта Visual Studio C ++?

Я бы рекомендовал использовать регулярные выражения вместо строковых операций для этого:

Set fso = CreateObject("Scripting.FileSystemObject")

filename = "C:\VBS\filediprova.txt"

newtext = vbLf & "<tr><td><a href=""..."">Beginning_of_DD_TC5</a></td></tr>"

Set re = New RegExp
re.Pattern = "(\n.*?Test Case \d)"
re.Global  = False
re.IgnoreCase = True

text = f.OpenTextFile(filename).ReadAll
f.OpenTextFile(filename, 2).Write re.Replace(text, newText & "$1")

Регулярное выражение будет соответствовать фиду линии (\n), за которым следует строка, содержащая строку Test Case, а затем номер (\d), и замена добавит этот текст с текстом, который вы хотите вставить (переменная newtext). Установка re.Global = False делает остановку замены после первого совпадения.

Если строка в текстовом файле закодирована как CR-LF (возврат каретки + строка), вам придется изменить \n в \r\n и vbLf в vbCrLf.

Если вам нужно изменить несколько текстовых файлов, вы можете сделать это в цикле следующим образом:

For Each f In fso.GetFolder("C:\VBS").Files
  If LCase(fso.GetExtensionName(f.Name)) = "txt" Then
    text = f.OpenAsTextStream.ReadAll
    f.OpenAsTextStream(2).Write re.Replace(text, newText & "$1")
  End If
Next
2
задан BareMetalCoder 13 July 2018 в 13:36
поделиться

1 ответ

Каков правильный способ работы здесь?

Вы должны добавить условие к цели импорта :

  <ImportGroup Label="ExtensionTargets">
    <Import Project="..\packages\xxx\xx.targets" Condition="Exists('..\packages\xxx\xx.targets')" />
  </ImportGroup>

Когда мы создаем проект Google Test, он по умолчанию импортирует файл .targets в файл проекта .vcxproj. Вы можете выгрузить проект и отредактировать его, вы будете следовать инструкциям импорта:

  <ImportGroup Label="ExtensionTargets">
    <Import Project="..\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.0\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.targets" Condition="Exists('..\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.0\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.targets')" />
  </ImportGroup>

Не знаете, почему Condition="Exists('..\packages\xx.targets')" был потерян в вашем заявлении на импорт, чтобы решить эту проблему, добавьте условие к Импорт цели.

Надеюсь, это поможет.

1
ответ дан Leo Liu-MSFT 17 August 2018 в 12:44
поделиться
  • 1
    – BareMetalCoder 16 July 2018 в 03:14
  • 2
    У меня есть раздел <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> внизу, который содержит элемент, называемый <Error Condition="!Exists('..\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.0\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.0\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.targets'))" /> - связанный? – BareMetalCoder 16 July 2018 в 03:15
  • 3
    На всякий случай, вы можете переместить его. Он использовался для успешного импорта импорта .targets. – Leo Liu-MSFT 16 July 2018 в 03:18
Другие вопросы по тегам:

Похожие вопросы: