我找不到用C#反序列化Apache Avro文件的方法.Avro文件是Microsoft Azure Event Hub中的存档功能生成的文件.
使用Java,我可以使用Apache的Avro Tools将文件转换为JSON:
java -jar avro-tools-1.8.1.jar tojson --pretty inputfile > output.json
Run Code Online (Sandbox Code Playgroud)
使用NuGet包Microsoft.Hadoop.Avro我能提取SequenceNumber,Offset和EnqueuedTimeUtc,但因为我不知道该用什么类型Body的异常被抛出.我试过Dictionary<string, object>和其他类型.
static void Main(string[] args)
{
var fileName = "...";
using (Stream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
using (var reader = AvroContainer.CreateReader<EventData>(stream))
{
using (var streamReader = new SequentialReader<EventData>(reader))
{
var record = streamReader.Objects.FirstOrDefault();
}
}
}
}
[DataContract(Namespace = "Microsoft.ServiceBus.Messaging")]
public class EventData
{ …Run Code Online (Sandbox Code Playgroud) 我正在使用新的最小 .NET 6 托管模型,并且进行了集成测试。
显然Program.cs需要配置值,所以我想使用自定义appsettings.Test.json文件。文档说我可以使用ConfigureAppConfiguration,但它的委托在之后运行Program,因此Program没有配置。以下是添加到Minimal API Playground 示例代码中的代码:
internal class PlaygroundApplication : WebApplicationFactory<Program>
{
private readonly string _environment;
public PlaygroundApplication(string environment = "Development")
{
_environment = environment;
}
protected override IHost CreateHost(IHostBuilder builder)
{
builder.UseEnvironment(_environment);
builder.ConfigureAppConfiguration(config =>
{
config.AddJsonFile(appSettings); // runs AFTER Program.cs
});
// Add mock/test services to the builder here
builder.ConfigureServices(services =>
{
});
return base.CreateHost(builder);
}
}
Run Code Online (Sandbox Code Playgroud)
我如何向 提供配置Program.cs?
var builder = WebApplication.CreateBuilder(args); …Run Code Online (Sandbox Code Playgroud) 在Commodore 64上使用6510程序集,我试图创建一个稳定的光栅效果.使用双IRQ原理我在屏幕上绘制一些光栅线.我用NOP填充以匹配每个正常扫描线的63个循环,并且每个标记线匹配23个循环.我意识到我需要设置一个特定的起始线,以便将我的第8次迭代与坏线相匹配,但无论我放在第一行的哪一行或我使用的NOP的组合,我都无法得到时机正确.我想要完整的线条,而不是"破碎".谁能看到我做错了什么?代码采用Kick Assembler格式.这是一个截图:

.pc = $0801 "Basic upstart"
:BasicUpstart($8000)
.pc = $8000 "Program"
jsr $ff81
sei
lda #$35
sta $01
jsr setupInterrupts
cli
jmp *
setupInterrupts:
lda #<int1
ldy #>int1
sta $fffe
sty $ffff
lda #$01
sta $d01a
lda #$7f
sta $dc0d
sta $dd0d
lda $dc0d
lda $dd0d
lda #$1b
sta $d011
lda #$01
sta $d019
lda start
sta $d012
rts
start:
.byte 56
int1:
pha txa pha tya pha
:STABILIZE()
.for (var i=0; i<7; i++) {
inc $d020 // …Run Code Online (Sandbox Code Playgroud) 收到与System.Net.Mail.MailMessage某些收件人一起发送的电子邮件似乎与电子邮件有编码问题.例如charachter ä显示为å¤.我已设置编码属性:
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
...
msg.BodyEncoding = System.Text.Encoding.UTF8;
msg.SubjectEncoding = System.Text.Encoding.UTF8;
Run Code Online (Sandbox Code Playgroud)
我还可以做些什么?
更新:
如果我使用该Body属性电子邮件正确显示,但当我使用该AlternateViews属性时,电子邮件显示不正确.
完整代码:
SmtpClient smtpClient = new SmtpClient("some.host.com");
MailMessage msg = new MailMessage();
msg.To.Add("someone@host.com");
msg.From = new MailAddress("name@host.com", "Name Name");
msg.Subject = "Test";
//Displays as ä
//msg.Body = "ä";
// Displays as ä
AlternateView htmlView = AlternateView.CreateAlternateViewFromString("ä", new ContentType(MediaTypeNames.Text.Html));
msg.AlternateViews.Add(htmlView);
smtpClient.Send(msg);
Run Code Online (Sandbox Code Playgroud)
发送到Gmail时,电子邮件会正确显示,但在发送到Exchange服务器时,电子邮件显示不正确.我已经在.NET 3.5和4.5中进行了测试.
Azure Functions/EFSQLSERVER .NET CORE 3.0 的问题:
重现:
导致错误,如以下代码段所示。有人遇到过这个问题吗?
Azure Functions Core Tools (2.7.1633 Commit hash: 45c7d86a3bbc9ed0a80a8f4199aa7ea80ccfb24e)
Function Runtime Version: 2.0.12673.0
[10/4/2019 6:13:14 PM] Building host: startup suppressed:False, configuration suppressed: False
[10/4/2019 6:13:14 PM] Loading startup extension 'Startup'
[10/4/2019 6:13:14 PM] Loaded extension 'Startup' (1.0.0.0)
[10/4/2019 6:13:14 PM] Loading startup extension 'DurableTask'
[10/4/2019 6:13:14 PM] Loaded extension 'DurableTask' (1.0.0.0) …Run Code Online (Sandbox Code Playgroud) azure azure-functions-runtime .net-core-3.0 entity-framework-core-3.0
我有一个NavigationView带有Button导航栏项的 SwiftUI 。似乎只有当用户点击那个小Image. 我可以在不影响导航栏高度的情况下将可点击区域放大吗?
我尝试添加.frame到Image,但这使导航栏太大。
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
Text("Foo")
.navigationBarTitle(Text("Title"), displayMode: .inline)
.navigationBarItems(leading:
HStack {
Button(action: {
print("tapped")
}) {
Image(systemName: "info.circle")
}
})
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用 Visual Studio 15.8.4 从私有 MyGet 源引用 NuGet 包。源代码由 GitHub 上的私人存储库托管。
我可以成功打印文件中的映射文档:
sourcelink print-json C:\Users\Foo\.nuget\packages\My.Package\1.1.0-beta-0040\lib\netstandard2.0\My.Package.dll
{"documents":{"C:\\projects\\my-package\\*":"https://raw.githubusercontent.com/username/My.Package/aba3ab5d12f1271943b8db0d79e1ee25ad4735c2f/*"}}
Run Code Online (Sandbox Code Playgroud)
我在 Visual Studio 中取消选中Enable Just My Code,并且我已选中Enable Source Link support和Fall back to Git Credential Manager authentication for all Source Link requests.
但是当我调试时,调试器不会进入包。我希望显示有关“源链接将从互联网下载”的对话框,但什么也没有发生。调试器只是单步执行代码行。
由于文档路径是正确的,除了tokenURI 中缺少的键之外,我得出的结论是 NuGet 包本身已正确打包,因此我没有提供有关该过程的任何详细信息。
这些文件不可下载,但这是由于未进行身份验证,不是吗?
sourcelink test C:\Users\Foo\.nuget\packages\My.Package\1.1.0-beta-0040\lib\netstandard2.0\My.Package.dll
{"documents":{"C:\\projects\\my-package\\*":"https://raw.githubusercontent.com/username/My.Package/aba3ab5d12f1271943b8db0d79e1ee25ad4735c2f/*"}}
2 Documents with errors:
111111111117629326ff4b1b85b15fad279137fe sha1 csharp C:\projects\my-package\src\My.Package\Extensions.cs
https://raw.githubusercontent.com/username/My.Package/11111111111095e33b8db0d79e1ee25ad4735c2f/src/My.Package/Extensions.cs
error: url failed NotFound: Not Found
1111111111184ac4af0122bdae9216bd24036e8f sha1 csharp C:\projects\my-package\src\My.Package\MyProgram.cs
https://raw.githubusercontent.com/username/My.Package/11111111111095e33b8db0d79e1ee25ad4735c2f/src/My.Package/MyProgram.cs
error: url failed NotFound: Not …Run Code Online (Sandbox Code Playgroud) 我有一个用于验证拉取请求的Azure DevOps 管道。我已配置 dotnet test为使用--collect "Code coverage"参数收集代码覆盖率指标:
- task: DotNetCoreCLI@2
displayName: dotnet test
inputs:
command: 'test'
arguments: '--configuration $(BuildConfiguration) --collect "Code coverage" /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura'
workingDirectory: $(baseWorkingDirectory)
projects: 'tests/**/*.csproj'
nobuild: true
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我也通过了/p:CollectCoverage=true /p:CoverletOutputFormat=cobertura。为了生成覆盖率报告,我必须这样做:
- task: CmdLine@2
inputs:
script: dotnet tool install -g dotnet-reportgenerator-globaltool
- task: CmdLine@2
inputs:
script: reportgenerator -reports:$(Build.SourcesDirectory)/tests/**/coverage.cobertura.xml -targetdir:$(Build.SourcesDirectory)/CodeCoverage -reporttypes:HtmlInline_AzurePipelines;Cobertura
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(Build.SourcesDirectory)/CodeCoverage/Cobertura.xml'
reportDirectory: '$(Build.SourcesDirectory)/CodeCoverage'
Run Code Online (Sandbox Code Playgroud)
文档指出拉取请求的代码覆盖率仅可使用 Visual Studio 代码覆盖率结果格式(文件扩展名 .coverage)
所以:
我有带有科学记数法数字的 JSON,例如1.83E+2。使用 Json.NET 将其反序列化为 along对我来说效果很好,但是当我用 System.Text.Json 中的新反序列化器替换反序列化器时,它会抛出一个JsonException:
System.Text.Json.JsonException:“无法将 JSON 值转换为 System.Int64。...'
这是一个可重现的示例:
static void Main()
{
// test1 is 183
var test1 = Newtonsoft.Json.JsonConvert.DeserializeObject<Foo>(@"{""Bar"": 1.83E+2}");
// throws JsonException
var test2 = System.Text.Json.JsonSerializer.Deserialize<Foo>(@"{""Bar"": 1.83E+2}");
}
public class Foo
{
public long Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 第一:是的,我知道不应在数据层中进行数字格式化,但我正在使用一个无法修改的应用程序,也无法在应用程序中格式化结果集。我只能写一个查询。
对于 SQL Server 2008 查询,我想使用空格作为千位分隔符并四舍五入到两位小数。示例:123363.249999应显示为123 363,25.
我试过了:
SELECT REPLACE(CONVERT(varchar, CONVERT(money, 123363.249999), 1), '.00', '')
Run Code Online (Sandbox Code Playgroud)
但这导致123,363.25. 我正在寻找比用空格替换逗号和用逗号替换点更好的解决方案。在查询中设置语言环境会很好。
设置:
我有一个数据库存储库和一个用于测试数据库存储库的单元测试存储库,这两个存储库共享 Azure DevOps 中的一个项目。我有一个 CI 管道,驻留在数据库项目中,在推送到远程跟踪分支时触发。当该目录中的任何分支被推送到时,触发器将运行 CI。
问题:
我还需要检查单元测试项目,以便我可以调用它。在创建任务等之前,我们不会知道主题分支的名称,如何动态捕获?
因此,工程师可以在 CI 支持的情况下在多个分支上工作,而不必担心在紧急情况下进行整理。
我试过:
trigger:
- dev/a/*
steps:
- checkout: git://proj/repo-a@dev/a/*
- checkout: git://proj/repo-b@dev/a/*
Run Code Online (Sandbox Code Playgroud)
只是想看看是否有可能同时进行项目。
它会引发错误:
管道无效。无法使用 ref refs/heads/dev/a/ 获取 Azure Repos 上托管的存储库 repo-a 的最新源版本。无法使用 ref refs/heads/dev/a/ 获取 Azure Repos 上托管的存储库 repo-b 的最新源版本。
我也尝试了上面没有通配符的方法,没有乐趣。另一点是我不想签出所有分支,而只想签出带有推送的分支。
当然这是可能的......
continuous-integration automation azure-devops azure-pipelines