我正在使用VSTS构建来运行CI构建.此版本定义是相同的我所有的Git分支(主,开发,功能等).
我现在正尝试使用VSTS版本管理实现部署管道.我计划有两个不同的版本定义.一个用于功能分支,一个用于更重要的分支,如develop和master.功能分支的发布定义将更加轻量级.
我认为这是非常基本和平常的.实际上,这几乎是微软发布管理的典型用例中记录的内容.
对于这两个管道,我想将它们配置为使用"持续部署"触发器自动启动.当我选择此触发器时,我必须选择一个工件源.
不幸的是,工件源会获取来自给定构建定义(我的CI构建)的所有工件(无论分支).由于我对所有分支使用相同的CI构建定义,看起来我无法在"持续部署"中配置我的两个版本管道,并且仍然使用相同的构建定义作为工件源.
任何人都知道如何为多个版本定义共享相同的构建定义,但只为特定分支启动发布?在定义工件源时,有人知道通过分支过滤的方法吗?
我在GitHub Packages上托管了 nuget 包。然后,当我尝试使用 列出 github nuget feed 中的包时nuget.exe,它告诉我它无法列出 feed 中的包:
> nuget list -Source "https://nuget.pkg.github.com/mabead/index.json"
WARNING: This version of nuget.exe does not support listing packages from package source 'https://nuget.pkg.github.com/mabead/index.json'.
No packages found.
Run Code Online (Sandbox Code Playgroud)
请注意,当我使用单击“管理解决方案的 Nuget 包”后打开的窗口时,这些包已在 Visual Studio 中正确列出。因此,该 feed 可以工作,但不能与 nuget cli 一起使用。
我使用的是 nuget.exe 5.5.1 版本。
知道我正在使用什么来使用 CLI 列出软件包吗?
使用ASP.NET Core 1.1和VS2015(sdk 1.0.0-preview2-003131),我有以下控制器:
public class QueryParameters
{
public int A { get; set; }
public int B { get; set; }
}
[Route("api/[controller]")]
public class ValuesController : Controller
{
// GET api/values
[HttpGet]
public IEnumerable<string> Get([FromQuery]QueryParameters parameters)
{
return new [] { parameters.A.ToString(), parameters.B.ToString() };
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我有两个查询参数.我想要的是要求其中一个(例如:) A.也就是说,我想使用一个属性(如果可能)来说明这个属性是必需的.然后,我希望ASP.NET在调用我的控制器之前进行此验证.
我本来希望使用Newtonsoft RequiredAttribute来使用与我已经用于验证PUT/POST内容中所需属性相同的属性,但由于url不是JSON字符串,因此显然不使用它.
是否有任何建议让ASP.NET Core自动检查所需的查询参数?
请注意,我知道我可以使用可空的查询参数自行编码检查,但这样做的目的是让ASP.NET在调用我的控制器之前进行验证,从而保持控制器整洁.
我有一组需要共享状态的 xunit.net 测试。希望我希望这些测试并行运行。所以我希望跑步者做:
在阅读 xunit 文档时,它说要在测试类之间共享状态,我需要定义一个“集合固定装置”,然后将我所有的测试类都放入该新集合中(例如:)[Collection("Database collection")]。但是,当我将我的测试类放在同一个装置中时,它们不再并行运行,因此它超出了目的:(
是否有内置的方法可以在 XUnit 中执行我想要的操作?
我的回退是将我的共享状态放入一个静态类中。
我想使用FFMPEG 对大文件进行转码,然后将结果直接存储在AWS S3上。这将在tmp空间有限的AWS Lambda内部完成,因此我无法在本地存储转码结果,然后在第二步将其上传到S3。我没有足够的tmp空间。因此,我想将FFMPEG输出直接存储在S3上。
因此,我创建了一个允许“ PUT”的S3预签名网址:
var outputPath = s3Client.GetPreSignedURL(new Amazon.S3.Model.GetPreSignedUrlRequest
{
BucketName = "my-bucket",
Expires = DateTime.UtcNow.AddMinutes(5),
Key = "output.mp3",
Verb = HttpVerb.PUT,
});
Run Code Online (Sandbox Code Playgroud)
然后,我使用生成的预签名URL调用ffmpeg:
ffmpeg -i C:\input.wav -y -vn -ar 44100 -ac 2 -ab 192k -f mp3 https://my-bucket.s3.amazonaws.com/output.mp3?AWSAccessKeyId=AKIAJDSGJWM63VQEXHIQ&Expires=1550427237&Signature=%2BE8Wc%2F%2FQYrvGxzc%2FgXnsvauKnac%3D
Run Code Online (Sandbox Code Playgroud)
FFMPEG返回退出代码1,并显示以下内容:
ffmpeg version N-93120-ga84af760b8 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 8.2.1 (GCC) 20190212
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用内存映射文件来编写具有较高IO需求的应用程序。在此应用程序中,我收到的数据突发量比磁盘能够支持的速度快。为了避免在应用程序中缓冲逻辑,我考虑过使用内存映射文件。有了这种文件,我只需在映射到文件的内存中写(比磁盘可以支持的速度更快),然后操作系统最终会将这些数据刷新到磁盘。因此,操作系统正在为我做缓冲。
经过实验后,我发现使用内存映射文件可以更快地写入内存,但是刷新磁盘的速度比普通文件要慢。这就是导致我得出这个结论的原因。这是一段代码,可以尽可能快地将其写入非内存映射文件中:
private static void WriteNonMemoryMappedFile(long fileSize, byte[] bufferToWrite)
{
Console.WriteLine(" ==> Non memory mapped file");
string normalFileName = Path.Combine(Path.GetTempPath(), "MemoryMappedFileWriteTest-NonMmf.bin");
if (File.Exists(normalFileName))
{
File.Delete(normalFileName);
}
var stopWatch = Stopwatch.StartNew();
using (var file = File.OpenWrite(normalFileName))
{
var numberOfPages = fileSize/bufferToWrite.Length;
for (int page = 0; page < numberOfPages; page++)
{
file.Write(bufferToWrite, 0, bufferToWrite.Length);
}
}
Console.WriteLine("Non-memory mapped file is now closed after {0} seconds ({1} MB/s)", stopWatch.Elapsed.TotalSeconds, GetSpeed(fileSize, stopWatch));
}
Run Code Online (Sandbox Code Playgroud)
此代码导致:
==> Non memory mapped file
Non-memory mapped file is …Run Code Online (Sandbox Code Playgroud) 我使用 git lfs 来存储我的 git repo 的大文件。然后我尝试使用托管代理构建这个 repo。我的构建非常简单。它只有一个任务:执行 PowerShell。在调用的脚本中,我想做的第一件事是获取我的 lfs 依赖项。因此,我的脚本中有以下内容:
& git lfs fetch
Run Code Online (Sandbox Code Playgroud)
不幸的是,我的构建失败并出现以下错误:
2016-03-04T19:49:05.7021988Z ##[error]git: 'lfs' is not a git command. See 'git --help'.
2016-03-04T19:49:05.7031986Z ##[error]Did you mean this?
2016-03-04T19:49:05.7041987Z ##[error] flow
Run Code Online (Sandbox Code Playgroud)
由于我无法在托管代理上安装任何东西,我应该如何让 git lfs 可用?
编辑
在这个问题中,我不是在谈论这里描述的 git lfs 身份验证问题。我严格说的是调用的问题git lfs。
一旦您能够调用git lfs,请查看此答案以解决身份验证问题。
我有一个单元测试,验证了一些代码抛出异常和其2个属性具有预期值。这是我的方法:
var exception = target.Invoking(t => t.CallSomethingThatThrows())
.ShouldThrow<WebServiceException>()
.And;
exception.StatusCode.Should().Be(400);
exception.ErrorMessage.Should().Be("Bla bla...");
Run Code Online (Sandbox Code Playgroud)
我不喜欢必须在三个语句中完成的断言外观。有没有一种优雅的方法可以在一个语句中做到这一点?我的第一个直觉是使用这样的东西:
target.Invoking(t => t.CallSomethingThatThrows())
.ShouldThrow<WebServiceException>()
.And.StatusCode.Should().Be(400)
.And.ErrorMessage.Should().Be("Bla bla...");
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不能编译。
我使用的外部 API 会意外发生变化。为了检测这些更改,我希望 JSON 反序列化(在 ASP.NET Core 上使用 newtonsoft json.net)在检测到 JSON 中未映射到我的 POCO 中的属性时抛出异常。
是否可以?我尝试使用以下反序列化设置,但它没有改变任何内容:
var serializerSettings = new JsonSerializerSettings
{
CheckAdditionalContent = true,
};
Run Code Online (Sandbox Code Playgroud) 我正在解决 MySql/EF Core 的一个问题,我随机抛出一个异常说Nested transactions are not supported. 当我的系统仅由一个用户使用时,不会发生此异常。但是当我并行运行我的测试或当我有多个用户时,就会发生异常。我查看了所有代码,它们无法创建嵌套事务。
到目前为止,唯一让我感到害怕的代码如下:
using (var transaction = _context.Database.BeginTransaction())
{
// Create a few entities and add them to the EF context
...
// Insert the rows: hopefully at this point, my transaction is not commited yet.
_context.SaveChanges();
// I then want to update a few rows with a raw sql statement without
// having to load the entities in memory.
_context.Database.ExecuteSqlCommand("UPDATE ...");
// Now that I have inserted and inserted some …Run Code Online (Sandbox Code Playgroud) c# ×3
azure-devops ×2
.net-core ×1
amazon-s3 ×1
asp.net-core ×1
ffmpeg ×1
git-lfs ×1
io ×1
json.net ×1
nuget ×1
performance ×1
xunit.net ×1