#.net-core #teamcity #fortify
#.net-core #teamcity #укрепите
Вопрос:
Я пытаюсь запустить следующий скрипт PowerShell для сканирования моего решения (.NET Core 2.0) с помощью Fortify:
$SolutionFilePath = "C:RepositoriesMyProject"
$SolutionFileName = "MyProjectToTest"
$SSCFPRFileName = "MyProjectToTest.fpr"
$BuildIdName = "MyProjectToTest"
$path = "D:Fortify"
If(!(test-path $path))
{
New-Item -ItemType Directory -Force -Path $path
}
cd
cd "C:Program Files (x86)Microsoft Visual Studio2019BuildToolsMSBuildCurrentBin"
sourceanalyzer -b $BuildIdName -clean
sourceanalyzer -b $BuildIdName msbuild "$SolutionFilePath$SolutionFileName.sln"
sourceanalyzer -b $BuildIdName -scan -f "$path$SSCFPRFileName"
exit 0
На моем локальном компьютере все работает нормально.
Но когда я попытался запустить его на сервере в качестве шага сборки в TeamCity (TeamCity Enterprise 2018.2.1 (сборка 61078)) Я получил сообщение об ошибке:
Microsoft (R) Build Engine version 16.0.461 g6ff56ef63c for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
MSBUILD : error MSB1021: Cannot create an instance of the logger. Could not load file or assembly 'Microsoft.Build.Utilities, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
Switch: C:Program FilesHPE_SecurityFortify_SCA_and_Apps_17.20CorelibFortifyMSBuildTouchless.dll
Я использую ту же версию Fortify на своем локальном компьютере и на сервере (Fortify Static Code Analyzer 17.20.0183 (с использованием JRE 1.8.0_144)
).
Как на сервере, так и на локальном компьютере я установил инструменты сборки для Visual Studio 2019 и .Net core SDK.
Я пробовал использовать другую версию MSBuild (14, 15, 16) dotnet.exe
и devenv.exe
установил ядро PowerShell. Я получил ту же ошибку.
Я также мог бы запустить скрипт на том же сервере для .Проекты NetFramework успешно выполнены, единственное изменение — я использовал другой путь:
cd "C:WindowsMicrosoft.NETFramework64v4.0.30319"
Кажется, что Fortify 17.20 не поддерживает .NETCore 2.X, когда я добавляю
-dotnet-core-version 2.0
Я получил ошибку (как локальную, так и серверную):
[error]: Invalid parameter 2.0 for command line argument -dotnet-core-version
но с 1.X все в порядке, так как же возможно, что одна и та же версия fortify отлично работает на локальном, но не на сервере?
В чем проблема с проектами .NETCore? есть идеи?
Ответ №1:
После некоторых поисков я нашел этот, и он отлично работает для меня:
$SolutionFilePath = "C:RepositoriesMyProject"
$SolutionFileName = "MyProjectToTest"
$SSCFPRFileName = "MyProjectToTest.fpr"
$BuildIdName = "MyProjectToTest"
$path = "D:Fortify"
If(!(test-path $path))
{
New-Item -ItemType Directory -Force -Path $path
}
cd
cd "$SolutionFilePath"
sourceanalyzer -b $BuildIdName -clean
sourceanalyzer -b $BuildIdName -libdirs **/* **/*
sourceanalyzer -b $BuildIdName -scan -f "$path$SSCFPRFileName"
exit 0
Нет msbuild никаких других команд, просто перейдите в папку решения и запустите ее без каких-либо дополнительных команд.