Улучшенная сборка для проектов .NET Core

#.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 никаких других команд, просто перейдите в папку решения и запустите ее без каких-либо дополнительных команд.