晚上好,
我在Jenkins的2.1项目中使用。{3}}的.Net Core 2.0版本:
withSonarQubeEnv('SonarQubeMain') {
bat "dotnet ${globals.SONAR_QUBE_MSBUILD_PATH}\\SonarScanner.MSBuild.dll begin /k:\"${globals.SONAR_QUBE_PROJECT}\" /d:sonar.host.url=${globals.SONAR_HOST_URL} /d:sonar.cs.xunit.reportsPaths=\"XUnit.xml\" /d:sonar.cs.opencover.reportsPaths=\"coverage.xml\"
}
bat "dotnet build --version-suffix ${env.BUILD_NUMBER}"
dir('test/mytestprojecthere') {
bat 'D:\\OpenCover\\OpenCover.Console.exe -target:"c:\\Program Files\\dotnet\\dotnet.exe" -targetargs:"xunit --no-build -xml XUnit.xml" -output:coverage.xml -oldStyle -filter:"-[*Tests*]*" -register:user'
}
withSonarQubeEnv('SonarQubeMain') {
bat "dotnet ${globals.SONAR_QUBE_MSBUILD_PATH}\\SonarScanner.MSBuild.dll end"
}
它适用于第一个构建,但在下一个构建中,它失败了:
Failed to create an empty directory 'D:\Jenkins\workspace\xxxxxxxx\.sonarqube'.
Please check that there are no open or read-only files in the directory and that you have the necessary read/write permissions.
Detailed error message: Access to the path 'SonarScanner.MSBuild.Common.dll' is denied.
并检查我的Windows服务器我可以看到多个.Net核心主机后台进程。如果我杀了这些我可以重建......
我为MSBuild推荐了msbuild /nodereuse:false
,但似乎不适用于dotnet核心版本?
答案 0 :(得分:5)
FYI @Nauzet在MSBuild存储库扫描程序#535中为此打开了一个问题。
总结:
答案 1 :(得分:1)
我们只是遇到了这个问题,发现它与dotnet和msbuild对由以前的多线程版本保留的正在运行的节点的重用有关。
为避免此问题,请在命令行上按以下方式使用/nodereuse:false
或/nr:false
:
msbuild /m /nr:false myproject.proj
msbuild /m /nodereuse:false myproject.proj
dotnet restore myproject.sln /nodereuse:false
答案 2 :(得分:0)
请编辑您的管道脚本,如下所示,它应该可以正常工作:
using (var reader = OpenXmlReader.Create(worksheetPart))
{
while (reader.Read())
{
if (typeof(Row).IsAssignableFrom(reader.ElementType))
{
var row = (Row)reader.LoadCurrentElement();
foreach (var cell in row.Elements<Cell>())
{
var (_, value) = ParseCell(cell);
}
}
}
}
<强> 更新 强>
这是我使用的dotnet核心应用程序管道构建脚本,它运行良好,没有任何问题:
withSonarQubeEnv('SonarQubeMain') {
bat "dotnet ${globals.SONAR_QUBE_MSBUILD_PATH}\\SonarScanner.MSBuild.dll begin /k:\"${globals.SONAR_QUBE_PROJECT}\" /d:sonar.host.url=${globals.SONAR_HOST_URL} /d:sonar.cs.xunit.reportsPaths=\"XUnit.xml\" /d:sonar.cs.opencover.reportsPaths=\"coverage.xml\"
bat "dotnet build --version-suffix ${env.BUILD_NUMBER}"
dir('test/mytestprojecthere') {
bat 'D:\\OpenCover\\OpenCover.Console.exe -target:"c:\\Program Files\\dotnet\\dotnet.exe" -targetargs:"xunit --no-build -xml XUnit.xml" -output:coverage.xml -oldStyle -filter:"-[*Tests*]*" -register:user'
}
bat "dotnet ${globals.SONAR_QUBE_MSBUILD_PATH}\\SonarScanner.MSBuild.dll end"
}
答案 3 :(得分:0)
我自己碰到了它,并通过运行dotnet build-server shutdown
作为构建计划中的第一项任务来“解决”它。由于多种原因,这不是理想的选择,其中一个很大的原因是,如果我尝试在同一台计算机上一次运行多个.NET Core版本,可能会引起问题。这似乎是扫描仪中的错误-希望它会尽快修复。
答案 4 :(得分:0)
我遇到了同样的问题,运行以下命令解决了该问题。
dotnet build-server shutdown
这是由于msbuild节点重用而发生的。我们将msbuild节点保持活动状态,以便在进行连续构建时节省启动时间。
也可以通过设置以下环境变量来关闭它。
MSBUILDDISABLENODEREUSE=1