小编mel*_*okb的帖子

Microsoft Roslyn与CodeDom

昨天在InfoWorld上关于新微软Roslyn新闻稿中:

这种"解构"编译器最明显的优点是它允许从.Net应用程序内部调用整个编译执行过程.Hejlsberg演示了一个C#程序,它将一些代码片段作为字符串传递给C#编译器; 编译器将生成的IL汇编代码作为对象返回,然后将其传递到公共语言运行库(CLR)以供执行.瞧!使用Roslyn,C#获得了动态语言在运行时生成和调用代码的能力.

自从.NET 4发布以来,我已经能够做到这一点CSharpCodeProvider.CompileAssemblyFromSource,实际上我在之前编写的一个ASP.Net项目中使用它实际上就是这样 - 允许用户在文本框中键入代码,选择程序集/名称空间引用,然后执行并显示该代码的输出,以便在Windows Azure上进行实时环境代码测试.

CodeDomRoslyn的一部分/前身吗?罗斯林的特殊好处是CodeDom什么?

.net codedom roslyn

107
推荐指数
4
解决办法
3万
查看次数

在jsfiddle中取消无限循环执行

当您在Chrome中的jsfiddle中获得无限循环时,您唯一的选择(我知道)是关闭选项卡.当然,这意味着您在当前窗口中丢失了所有工作!是否有一种简单的方法可以阻止无限执行的脚本?

  1. 我打开了开发人员工具,因为我正在做一些调试.
  2. 我能够暂停脚本并逐步完成循环.
  3. 我找不到任何地方停止脚本.
  4. 我无法修改脚本或变量以停止无限循环(因为脚本执行发生在单独域上的iframe中,因此不允许使用JavaScript修改iframe中的数据并在控制台中生成异常).

这一切都是因为我决定在我的循环中交换方向

for (var c = 0; c <= 11; c++)
Run Code Online (Sandbox Code Playgroud)

for (var c = 12; c > 0; c++)
Run Code Online (Sandbox Code Playgroud)

但正如你在上面所看到的,我忘了将它c++改为c--.

有任何想法吗??我仍然打开标签,我希望在不关闭标签的情况下取回标签:-)

javascript google-chrome infinite-loop jsfiddle

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

获得通用类型的"真实"类

如何获得泛型类型的"真实"类?

例如:

public class MyClass<T> {
    public void method(){
        //something

        System.out.println(T.class) //causes a compile error, I wont the class name

        //something
    }
}
Run Code Online (Sandbox Code Playgroud)

如果T =整数

输出:

java.lang.Integer
Run Code Online (Sandbox Code Playgroud)

如果T = String

输出:

java.lang.String
Run Code Online (Sandbox Code Playgroud)

谢谢

java generics

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

SQL中的IsDate函数将无效日期评估为有效

我正在针对Excel文件中的导入数据运行SQL语句.在这个SQL中,我正在检查用户是否通过使用IsDate函数正确输入了日期.由于这是尚未转换的原始数据,因此所有日期都存储在varchar数据类型字段中.

在某些情况下,当用户输入的日期格式明显不正确时,IsDate返回1(有效日期).

例如:

07/001/2012

2012-07-002

007/002/2012
Run Code Online (Sandbox Code Playgroud)

关于如何处理这个问题的任何建议?

SELECT *
  FROM tblImport
 WHERE (ISDATE(dt) = 0 
        AND (dt is not null AND dt <> ''))
Run Code Online (Sandbox Code Playgroud)

谢谢!

ps Smacking用户'没有帮助.

sql t-sql sql-server

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

Windows Azure跟踪日志无法正常工作

我确定我错过了一些简单的东西,但我无法让简单的Trace.WriteLine在Azure上工作.

我采取的步骤:

Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString已设置为我们的Azure存储帐户

将模块诊断导入服务定义文件.

Web config:

  <system.diagnostics>
    <switches>
      <add name="logLevel" value="4" />
    </switches>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
          name="AzureDiagnostics">
        </add>
      </listeners>
    </trace>

  </system.diagnostics>
Run Code Online (Sandbox Code Playgroud)

WebRole.cs

public class WebRole : RoleEntryPoint
{
    public override bool OnStart()
    {


        String wadConnectionString = "Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString";

        CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(wadConnectionString));

        RoleInstanceDiagnosticManager roleInstanceDiagnosticManager =
                cloudStorageAccount.CreateRoleInstanceDiagnosticManager(
                RoleEnvironment.DeploymentId,
                RoleEnvironment.CurrentRoleInstance.Role.Name,
                RoleEnvironment.CurrentRoleInstance.Id);

        DiagnosticMonitorConfiguration diagnosticMonitorConfiguration =
            roleInstanceDiagnosticManager.GetCurrentConfiguration();

        diagnosticMonitorConfiguration.Directories.ScheduledTransferPeriod =
               TimeSpan.FromMinutes(5d);

        diagnosticMonitorConfiguration.Logs.ScheduledTransferPeriod =
               TimeSpan.FromMinutes(1d);

        diagnosticMonitorConfiguration.Logs.ScheduledTransferLogLevelFilter = LogLevel.Verbose;

        roleInstanceDiagnosticManager.SetCurrentConfiguration
              (diagnosticMonitorConfiguration);

        Trace.WriteLine("This is the message");
        Debug.Write("This is the debug message"); …
Run Code Online (Sandbox Code Playgroud)

.net trace azure azure-storage azure-diagnostics

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

乘法-Java后的双值否定

在我的代码中,我有以下行.

double temp=(c12*fileSize);
Run Code Online (Sandbox Code Playgroud)
  • 这里c12是double,fileSize是double
  • c12的值为1700和
  • fileSize的值为1944038

但是在乘法后我得到了-990102696.

任何人都可以帮助我吗?有些尺寸限制出错吗?

java

8
推荐指数
2
解决办法
2208
查看次数

VS UnitTest - 线程被中止

我有一组并行运行的单元测试(这很重要,如果测试是单线程运行的,它可以正常运行),这使得调用WebClient下载一直需要30秒才能返回的资源,这会导致单元使用以下两条消息之一进行测试以强制退出:

威胁已经被清除了.

已卸载运行该线程的应用程序域.

我已经尝试设置[Timeout]属性,各种app.config设置,甚至包括创建一个EventWaitHandle使单元测试线程在WebClient线程上等待,没有运气.我检查了测试设置下的测试超时设置,并将其设置为默认值30分钟.


编辑2:

如@peer所示,这是VS.Net测试框架中的一个已知错误:http://connect.microsoft.com/VisualStudio/feedback/details/587390/threadabortexception-when-running-two-tests-in-parallel 酮-既能40秒

编辑:

这是最简单的方案,它将重现问题.你可以让这些单元测试运行完成,如果是,怎么样? 这些测试必须并行运行! 启动一个新的Visual Studio单元测试项目,并使用以下设置和测试方法代码.运行时,确保它们实际并行运行(即,您需要一个具有多个内核的处理器,并检查它们是否同时运行.我发现要让它们并行运行,我必须应用所有设置,然后关闭项目并再次重新打开它,然后才能应用并行化).

Local.testsettings(添加parallelTestCount="#",适用于您的处理器):

<Description>These are default test settings for a local test run.</Description>
<Deployment enabled="false" />
<Execution parallelTestCount="4">
  <TestTypeSpecific />
  <AgentRule name="Execution Agents">
  </AgentRule>
</Execution>
Run Code Online (Sandbox Code Playgroud)

TraceAndTestImpact.testsettings(注释掉DataCollectors):

<Description>These are test settings for Trace and Test Impact.</Description>
<Execution parallelTestCount="0">
  <TestTypeSpecific />
  <AgentRule name="Execution Agents">
    <!--<DataCollectors>
      <DataCollector uri="datacollector://microsoft/SystemInfo/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TestTools.DataCollection.SystemInfo.SystemInfoDataCollector, Microsoft.VisualStudio.TestTools.DataCollection.SystemInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="System Information"> …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading unit-testing timeout

7
推荐指数
1
解决办法
7604
查看次数

Char(9)不在Sql server 2005中打印选项卡

我正在尝试使用以下命令在sql server中打印选项卡:

select 'tab-->' + char(9) + '<--tab'
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用,总是打印

tab--> <--tab
Run Code Online (Sandbox Code Playgroud)

有什么我想念的吗?

sql-server char

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

为什么ConcurrentWhatever.Count拍摄快照

关于ConcurrentStack/Concurrent Queue的C#/.NET Little Wonders文章中,提到了关于以下.Count操作的以下内容ConcurrentStack:

Count获取堆栈的快照,然后计算项目.这意味着它是O(n)操作,如果您只想检查空堆栈,请调用IsEmpty而不是O(1).

我在多线程编程方面还不是很有经验,但我明白为什么你不能只是遍历集合中的项目并对它们进行计数,因为集合可能同时被其他线程更改.但是,如果您必须锁定 ConcurrentStack足够长的时间来制作快照,那么只要在锁定项目时对项目进行计数就不会更容易,返回该计数并释放锁定,而不是花费开销和时间成本在释放锁之前生成整个快照?

我可能会遗漏一些关于它是如何工作的基本知识,我将不胜感激您的任何想法或见解.

.net c# concurrency multithreading

6
推荐指数
2
解决办法
442
查看次数

Lambda表达式缩进不正确

我在Visual Studio 2013中已经有一段时间遇到这个问题.它似乎并不理解如何在错误排列的情况下将缩进规则正确应用于lambda表达式.这是一个简化的例子:

var s = new Action(() =>
   {
   });
Run Code Online (Sandbox Code Playgroud)

在第二行和第三行中,缩进只有3个空格而不是4个(真正的代码示例更多,更大,内部表达式跨越数百行 - 这是我的同事检查的,我正在尝试修复它).我已经尝试了重新格式化代码,文档,重新创建大括号等的每种组合.似乎没有什么工作.它拒绝正确地自动更新缩进.

我通常不打扰它,但它导致内部的所有代码也被1个字符关闭.当我在中间键入线条时,标签/移位+标签标记与上方和下方的线条相差1个字符,我不得不进行调整以重新排列.我能找到的最接近这个问题的是来自2013年的Connect Feedback,据说已修复,但我正在更新4(2014年11月发布)并且仍然遇到问题.

如果没有手动浏览并更新lambda表达式中每一行的缩进,是否有人知道如何快速修复此代码?

c# lambda indentation visual-studio-2013

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