Я пытаюсь запустить следующий скрипт 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? есть идеи?