从历史上看,这已经使用Microsoft Build Tools完成.但似乎构建工具可能不适用于2015年之后的版本.替换似乎是Visual Studio构建工具,它似乎还没有真正的主页.
我下载了VS2017 Professional安装程序,然后转到Individual Components选项卡.然后,摘要告诉我Visual Studio核心编辑器在那里,占用753MB.我不想要编辑.只是msbuild.没有办法取消选择编辑器.
有没有办法安装最新版本的msbuild而不安装Visual Studio IDE?
我对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) … 忽略了片刻的荒谬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) 在原生Android日历应用中,RFC 2445协议用于创建.ics文件.我在一些博客中发现RFC 2445已被RFC 5545取代.任何人都可以告诉我RFC 5545中的额外功能是什么以及它与RFC 2445有什么不同?
在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.
我用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. (它仍然有Tzdb和Serialization。)我在 NodaTime 源代码中摸索了一下,但我不确定替换是什么,如果有的话。
我们应该在 NodaTime 的 .NET Core 端口中使用什么进行 BCL 时区查找?
我有单元测试。如果其中之一失败,我的构建就会失败。
我想将相同的原则应用于性能。我有一系列针对通过库的几个热路径的微基准测试。根据经验,这些领域的放缓对图书馆的整体性能产生了不成比例的影响。
如果有某种方法可以有一些“性能构建”的概念,如果性能回归太显着,它可能会失败,那就太好了。
我曾考虑过不得超过的硬编码阈值。就像是:
Assert.IsTrue(hotPathTestResult.TotalTime <= threshold)
但是将其与绝对值挂钩是硬件和环境相关的,因此很脆弱。
有没有人实现过这样的东西?微软为 Kestrel 做了什么?
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,则会抛出异常。
我需要向 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) 我是Hyperledger Fabric的新手。在当前版本的Hyperledger Fabric中,在chaincode.go中找不到名为ReadCertAttributes的函数。有什么方法可以获取属性?
我可以用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#项目中工作,为什么它在语义错误?
c# ×5
ical-dotnet ×2
icalendar ×2
rfc5545 ×2
.net-core ×1
async-await ×1
build-server ×1
build-tools ×1
calendar ×1
compiler-bug ×1
dday ×1
f# ×1
interlocked ×1
java ×1
linq ×1
msbuild ×1
nodatime ×1
outlook ×1
rfc2445 ×1
standards ×1
timezone ×1