在过去两个月左右的时间里,我一直在观察实时保护服务的一个奇怪现象,该服务捆绑在Windows 10的Windows Defender中.
当此服务设置为ON时,Visual Studio构建需要花费极长的时间才能完成.Visual Studio本身需要永远推出.此外,如果Outlook中安装了托管加载项(使用Visual Studio Tools For Office,VSTO编写),则Outlook需要13-14秒才能启动!禁用此服务后,Outlook将在两秒钟左右再次启动.
我已经在Twitter上通过Windows支持提出了这个问题,并尝试在线与Microsoft支持人员讨论这个问题一小时没有任何解决方案.环顾互联网,我可以看到有些用户报告了同样的问题
http://ardalis.com/speed-up-visual-studio-build-times
我已经注意到这只有两个月左右了.我尝试在Azure等中启动新的虚拟机来测试这个,并且在每个实例中我都注意到这个真正的时间保护服务是罪魁祸首.我的主要问题是Outlook加载时间说实话.
我试图在微软的答案的网站上发布这个位置,但到目前为止没有运气.我希望这里的任何人都知道如何在不为实时保护服务中的Outlook添加例外的情况下解决此问题(之后加载项按预期在200毫秒内加载).
我刚开始使用Azure,我遇到使用PowerShell cmdlet处理存储帐户的问题.
我在该存储帐户中创建了一个存储帐户和一个容器.接下来,我安装了Azure Powershell SDK和命令let等,并导入了publishsettings文件.当我执行Get-AzureSubscription或Get-AzureStorageAccount命令时,它会在PowerShell控制台中正确显示我的订阅以及各种存储端点.
但是,如果我执行Get-AzureStorageBlob调用或Set-AzureStorageBlobContent,我会收到以下错误
Get-AzureStorageBlob : Can not find your azure storage credential. Please set current storage account using
"Set-AzureSubscription" or set the "AZURE_STORAGE_CONNECTION_STRING" environment variable.
Run Code Online (Sandbox Code Playgroud)
我确实在这里结束了.谷歌搜索这个错误字符串只会引起对Github等代码的引用.真的很感激一些帮助.
我可能已经陷入了一种相当不成熟的困惑.请参考下面的代码(控制台应用程序)
namespace Tasks101
{
class Program
{
static void Main(string[] args)
{
Program p = new Program();
var x = p.Blah();
}
private async Task Blah()
{
await Task.Delay(TimeSpan.FromSeconds(3)).ConfigureAwait(false);
}
private async void ReturnsVoid()
{
await Task.Delay(TimeSpan.FromSeconds(3)).ConfigureAwait(false);
}
private void Nothing()
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,在Blah()方法中,当执行时,我还没有任何显式的return语句
var x = p.Blah();
Run Code Online (Sandbox Code Playgroud)
的类型x是Task.我再次在ReturnsVoid方法中没有return语句,但也编译.
所以问题是
Task从Blah方法返回一个没有我在return那里的声明,为什么同样的事情没有从ReturnsVoid方法返回任何东西.Blah方法返回的内容?如果我一个接一个地等待两个声明怎么办?我有一个明确定义的服务合同,它暴露了一堆方法.我们有一个这个合同的典型服务实现,它与我们的MVC应用程序一起托管在IIS 7中.
该体系结构是典型的分布式应用程序,其接口在基础核心库(可重新分发)中定义,独立服务库中的实现,最后是MVC App暴露实现的终点(在服务图书馆).
现在的情况是,这些现有服务方法之一需要执行一个逻辑过程,该过程最多可能需要10分钟才能执行.在正常情况下,我们会考虑工作流服务,但是所讨论的界面正在使用中,我们有一套单元测试来测试我们的服务等,我们真的无法摆脱我们所拥有的这种实现.
所以我的问题是 -
嗨,我正在使用Wix创建安装程序,该安装程序必须使用安装程序在用户系统上复制的文件的路径写入注册表值。问题是注册表项应以这种格式编写
file:///C:/Program Files/....
Run Code Online (Sandbox Code Playgroud)
在Wix代码项目中,我有INSTALLFOLDER目录ID,它指向
C:\Program Files\....
Run Code Online (Sandbox Code Playgroud)
我真的很难将后一种表示法转换成前一种表示法。我创建了一个自定义操作,希望设置一个属性,以便可以使用它。以下是代码
自定义操作(目前为单独的DLL,可以内联吗?)
public class CustomActions
{
[CustomAction]
public static ActionResult CustomAction1(Session session)
{
session.Log("Begin CustomAction1");
string origValue = session["INSTALLFOLDER"];
MessageBox.Show(origValue);
string retVal = origValue.Replace("\\", "//");
MessageBox.Show(retVal);
session["Custom_Prop"] = retVal;
return ActionResult.Success;
}
}
Run Code Online (Sandbox Code Playgroud)
和Product.wxs
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="SetupProject1" Language="1033" Version="1.2.0.0" Manufacturer="nik" UpgradeCode="4a74ff86-49a9-4011-9794-e1c18077172f">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate />
<Feature Id="ProductFeature" Title="SetupProject1" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
<InstallExecuteSequence>
<Custom Action='FooAction' …Run Code Online (Sandbox Code Playgroud)