作为用于NuGet程序包创建的CI过程的一部分,是否可以将新创建的程序包安装到位于存储库中的项目中?这样就可以测试安装了。使用Visual Studio UI很容易,但是如何在新创建的Azure管道工作程序上自动进行呢?
Visual Studio 2013引入了没有MSBuild的新的包恢复方法,现在不推荐使用旧的Enable NuGet Package Restore方法.
迁移项目后,如Nuget文档中所述,在VisualStudio包中进行构建还原时,但使用命令行VisulStudio运行构建时,不会还原事件vcvarsall.bat包.
我错过了什么吗?
好吧,如果从命令行调用Visual Studio,则不会调用包还原.使用nuget.exe手动包恢复
nuget restore Solution.sln
Run Code Online (Sandbox Code Playgroud)
要使此特定行工作,您需要在系统范围内安装NuGet并将其二进制文件夹的路径添加到
PATH
环境变量中
我对ReaderWriterLockSlim感到沮丧并且延迟了ExitWriteLock.为什么WriteLock在定时器中发布回调?
var _lock = new ReaderWriterLockSlim();
_lock.EnterWriteLock();
Assert.AreEqual(true, _lock.IsWriteLockHeld); // good
System.Threading.Timer timer = new Timer(state =>
{
_lock.ExitWriteLock(); //throws exception that lock is not held
}, null, 1, -1);
Thread.Sleep(1000);
Assert.AreEqual(false, _lock.IsWriteLockHeld);
Run Code Online (Sandbox Code Playgroud) Jenkins Job DSL插件是一种非常好的方式,可以在repo中存储CI配置,并在分支之间进行更改.
问题是 - 是否有一种自然或接近自然的方式来运行MSTest测试,解析结果并显示它们.
现在我做了一个powershell调用,但这只给了我日志,而不是UI集成.
def testSomeProjectJob = job(testSomeProjectJobName) {
steps {
powerShell("& ${vstest} '${root}/SomeProject/SomeProject.Tests/bin/Debug/SomeProject.Tests.dll' ")
}
}
Run Code Online (Sandbox Code Playgroud)
可能有一个出版商或一个带模板的技巧,或者为JOB DSL编写插件的一些技巧
UPD:使用@daspilker回答,jenkins xUnit插件和archiveXUnit的 MSTest和VSTest的最终脚本模板
job('RunTests') {
steps {
// VSTEST
powerShell("& ${vstest} 'path/to/Tests.dll' /logger:trx ")
// Or MSBUILD
powerShell("& ${msbuild} /testcontainer:'path/to/Tests.dll' ")
}
publishers {
archiveXUnit {
msTest {
pattern('**/*.trx')
// deleteOutputFiles()
}
}
}
}
Run Code Online (Sandbox Code Playgroud) mstest jenkins jenkins-plugins jenkins-job-dsl jenkins-mstest