小编ria*_*njs的帖子

如何在不安装IDE的情况下在构建服务器上安装VS2017版本的msbuild?

从历史上看,这已经使用Microsoft Build Tools完成.但似乎构建工具可能不适用于2015年之后的版本.替换似乎是Visual Studio构建工具,它似乎还没有真正的主页.

我下载了VS2017 Professional安装程序,然后转到Individual Components选项卡.然后,摘要告诉我Visual Studio核心编辑器在那里,占用753MB.我不想要编辑.只是msbuild.没有办法取消选择编辑器.

有没有办法安装最新版本的msbuild而不安装Visual Studio IDE?

msbuild build-tools build-server visual-studio-2017

193
推荐指数
1
解决办法
13万
查看次数

为什么这个Java代码比相同的C#代码快6倍?

我对Project Euler问题5有一些不同的解决方案,但是这个特定实现中两种语言/平台之间的执行时间差异引起了我的兴趣.我没有使用编译器标志进行任何优化,只是简单javac(通过命令行)和csc(通过Visual Studio).

这是Java代码.它在55ms结束.

public class Problem005b
{
    public static void main(String[] args)
    {
        long begin = System.currentTimeMillis();
        int i = 20;
        while (true)
        {
            if (
                    (i % 19 == 0) &&
                    (i % 18 == 0) &&
                    (i % 17 == 0) &&
                    (i % 16 == 0) &&
                    (i % 15 == 0) &&
                    (i % 14 == 0) &&
                    (i % 13 == 0) &&
                    (i % 12 == 0) …

c# java execution-time

44
推荐指数
3
解决办法
5914
查看次数

在Interlocked.Exchange中使用await会使C#编译器崩溃

忽略了片刻的荒谬await荷兰国际集团的Enumerable.Range电话.只是在那里引发崩溃行为.它就像一个方法,可以做一些网络IO来构建一个值对象的集合.(的确,这是我看到崩溃发生的地方.)

如果我注释掉该Interlocked.Exchange行,编译器不会崩溃.

public class Launcher
{
    private static IEnumerable<int> _foo;
    static void Main(string[] args)
    {
        DoWorkAsync().Wait();
    }

    private static async Task DoWorkAsync()
    {
        RefreshCache();
        foreach (var element in _foo)
        {
            Console.WriteLine(element);
        }

        Console.ReadLine();
    }

    private static async void RefreshCache()
    {
        Interlocked.Exchange(ref _foo, await Cache());
    }

    private static async Task<IEnumerable<int>> Cache()
    {
        return Enumerable.Range(0, 10);
    }
}
Run Code Online (Sandbox Code Playgroud)

更改RefreshCache()为此可防止编译器崩溃:

private static async void RefreshCache()
{
    var foo = await Cache();
    Interlocked.Exchange(ref _foo, foo);
} …
Run Code Online (Sandbox Code Playgroud)

c# interlocked compiler-bug async-await

20
推荐指数
0
解决办法
558
查看次数

RFC 5545与RFC 2445有何不同

在原生Android日历应用中,RFC 2445协议用于创建.ics文件.我在一些博客中发现RFC 2445已被RFC 5545取代.任何人都可以告诉我RFC 5545中的额外功能是什么以及它与RFC 2445有什么不同?

standards icalendar calendar rfc2445 rfc5545

14
推荐指数
2
解决办法
2676
查看次数

如何在返回对象的ASP.NET Core WebAPI控制器中抛出异常?

在Framework WebAPI 2中,我有一个如下所示的控制器:

[Route("create-license/{licenseKey}")]
public async Task<LicenseDetails> CreateLicenseAsync(string licenseKey, CreateLicenseRequest license)
{
    try
    {
        // ... controller-y stuff
        return await _service.DoSomethingAsync(license).ConfigureAwait(false);
    }
    catch (Exception e)
    {
        _logger.Error(e);
        const string msg = "Unable to PUT license creation request";
        throw new HttpResponseException(HttpStatusCode.InternalServerError, msg);
    }
}
Run Code Online (Sandbox Code Playgroud)

果然,我收到消息的500错误.

如何在ASP.NET Core Web API中执行类似的操作?

HttpRequestException似乎不存在.我宁愿继续返回对象而不是HttpRequestMessage.

c# asp.net-core-webapi

11
推荐指数
2
解决办法
2万
查看次数

NodaTime 的 .NET Core 实现中的 BCL DateTimeZoneProvider 在哪里?

我用NodaTime做时区转换在ical.net,因为它的性能比以前的实现它试图用更好的VTIMEZONE元素来处理时间的变化和时区转换。

在幕后,这种方法对性能非常重要:它将测试套件运行时间从大约 6 秒降低到大约 2.5 秒。

public static DateTimeZone GetZone(string tzId)
{
    // IANA lookup attempt

    zone = DateTimeZoneProviders.Bcl.GetZoneOrNull(tzId);
    if (zone != null)
    {
        return zone;
    }

    // Serialization lookup attempt
    // Some other tricks to find a reasonable time zone, etc.
}
Run Code Online (Sandbox Code Playgroud)

NodaTime 的 .NET Core 实现没有Bcl作为DateTimeZoneProvider. (它仍然有TzdbSerialization。)我在 NodaTime 源代码中摸索了一下,但我不确定替换是什么,如果有的话。

我们应该在 NodaTime 的 .NET Core 端口中使用什么进行 BCL 时区查找?

c# timezone base-class-library nodatime .net-core

6
推荐指数
1
解决办法
1324
查看次数

如果性能下降太多,是否可以使用 Benchmark.NET 使 CI 构建“失败”?

我有单元测试。如果其中之一失败,我的构建就会失败。

我想将相同的原则应用于性能。我有一系列针对通过库的几个热路径的微基准测试。根据经验,这些领域的放缓对图书馆的整体性能产生了不成比例的影响。

如果有某种方法可以有一些“性能构建”的概念,如果性能回归太显着,它可能会失败,那就太好了。

我曾考虑过不得超过的硬编码阈值。就像是:

Assert.IsTrue(hotPathTestResult.TotalTime <= threshold)

但是将其与绝对值挂钩是硬件和环境相关的,因此很脆弱。

有没有人实现过这样的东西?微软为 Kestrel 做了什么?

performance-testing benchmarkdotnet

6
推荐指数
1
解决办法
923
查看次数

Linq 中的三元运算符

var result = from payroll in currentMonthPayroll
    select new SalaryDifference
    {
        PreviousMonthSalary = previousMonthPayroll.Where(t => t.EmployeeId == payroll.EmployeeId).FirstOrDefault() == null ?
        default(decimal) : previousMonthPayroll.Where(t => t.EmployeeId == payroll.EmployeeId).FirstOrDefault().Salary,
    };
Run Code Online (Sandbox Code Playgroud)

有没有办法不重复previousMonthPayroll.Where(t => t.EmployeeId == payroll.EmployeeId).FirstOrDefault()选择Salary值的逻辑?

我试过:

previousMonthPayroll.Where(t => t.EmployeeId == payroll.EmployeeId)
    .FirstOrDefault().Salary ?? default(decimal);
Run Code Online (Sandbox Code Playgroud)

但是,如果previousMonthPayroll.Where(t => t.EmployeeId == payroll.EmployeeId).FirstOrDefault()为 null,则会抛出异常。

c# linq

5
推荐指数
2
解决办法
2万
查看次数

如何使用 ical.net 创建 HTML 格式的 ICS 消息正文?

我需要向 Web 应用程序的用户发送提醒。

为此,我使用 nuget 包中的 iCal.Net。按照有关用法的说明,我可以发送带有包含 ics 文件的附件的电子邮件。

是否可以将事件描述的格式设置为 html 并使其在 Outlook Office 客户端和 Chrome 日历上都可以使用?

在这些客户端上,我看到带有所有 html 标签的纯文本表示。我还在 Windows 10 日历上进行了测试,其中事件描述正确显示为 html。我需要设置更多东西吗?

这是我的日历字符串生成

var now = DateTime.Now;
var later = scadenza.Value;

var e = new Event
{
    DtStart = new CalDateTime(later),
    DtEnd = new CalDateTime(later),
    Description = mailText,
    IsAllDay = true,
    Created = new CalDateTime(DateTime.Now),
    Summary = $"Reminder for XYZ",

};

var attendee = new Attendee
{
    CommonName = "…..",
    Rsvp = true,
    Value = new Uri("mailto:" + …
Run Code Online (Sandbox Code Playgroud)

icalendar outlook google-calendar-api rfc5545 ical-dotnet

5
推荐指数
1
解决办法
2万
查看次数

Dday Ical 库的文档在哪里?

曾经托管它的网站不再有效:

DDay软件

我在其他任何地方都找不到文档。是否有其他文档的副本?

dday ical-dotnet

2
推荐指数
1
解决办法
1690
查看次数

如何从Hyperledger Fabric的最新版本中检索用户信息?

我是Hyperledger Fabric的新手。在当前版本的Hyperledger Fabric中,在chaincode.go中找不到名为ReadCertAttributes的函数。有什么方法可以获取属性?

hyperledger-fabric

2
推荐指数
1
解决办法
1534
查看次数

类型不匹配 - 适用于F#交互式,但不适用于真正的F#项目

我可以用F#interactive做到这一点,它运行正常:

> printf "%d\n" 5;;
5
val it : unit = ()
Run Code Online (Sandbox Code Playgroud)

但如果我在"真正的"F#项目中做同样的事情:

let main argv =
    printf "%d\n" 5
Run Code Online (Sandbox Code Playgroud)

我尝试编译时遇到此错误:

Type mismatch. Expecting a
    'a -> int    
but given a
    'a -> unit    
The type 'int' does not match the type 'unit'
Run Code Online (Sandbox Code Playgroud)

将语句包装ignore()或管道化为ignore(|> ignore)也不起作用.

这是一个语义错误,但我不知道如何推理它,谷歌没有帮助.

为什么它在F#交互式工作而不是在实际的F#项目中工作,为什么它在语义错误?

f# f#-interactive

0
推荐指数
2
解决办法
238
查看次数