Фортифицируйте сборку для .NET Core Projects - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь запустить следующий скрипт PowerShell для сканирования моего решения (.NET Core 2.0) с помощью Fortify:

$SolutionFilePath = "C:\Repositories\MyProject"
$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 Studio\2019\BuildTools\MSBuild\Current\Bin"

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 Files\HPE_Security\Fortify_SCA_and_Apps_17.20\Core\lib\FortifyMSBuildTouchless.dll

Я использую ту же версию Fortify на моем локальном компьютере и сервере (Fortify Static Code Analyzer 17.20.0183 (с использованием JRE 1.8.0_144) ).

На сервере и локальном компьютере я установил Инструменты сборки для Visual Studio 2019 и SDK с ядром .Net.

Я пробовал с другой версией MsBuild (14, 15, 16) и dotnet.exe и devenv.exe, и я установил PowerShell Core. Я получил ту же ошибку.

Я также мог бы успешно запустить скрипт на том же сервере для проектов .NETFramework, единственное изменение - я использовал другой путь:

cd "C:\Windows\Microsoft.NET\Framework64\v4.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 Ответ

1 голос
/ 11 апреля 2019

После некоторых поисков я нашел этот, и он прекрасно работает для меня:

$SolutionFilePath = "C:\Repositories\MyProject"
$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, никаких других команд просто перейдите в папку решения и запустите ее без каких-либо дополнительных команд.

...