昨天在InfoWorld上关于新微软Roslyn的新闻稿中:
这种"解构"编译器最明显的优点是它允许从.Net应用程序内部调用整个编译执行过程.Hejlsberg演示了一个C#程序,它将一些代码片段作为字符串传递给C#编译器; 编译器将生成的IL汇编代码作为对象返回,然后将其传递到公共语言运行库(CLR)以供执行.瞧!使用Roslyn,C#获得了动态语言在运行时生成和调用代码的能力.
自从.NET 4发布以来,我已经能够做到这一点CSharpCodeProvider.CompileAssemblyFromSource
,实际上我在之前编写的一个ASP.Net项目中使用它实际上就是这样 - 允许用户在文本框中键入代码,选择程序集/名称空间引用,然后执行并显示该代码的输出,以便在Windows Azure上进行实时环境代码测试.
是CodeDom
Roslyn的一部分/前身吗?罗斯林的特殊好处是CodeDom
什么?
当您在Chrome中的jsfiddle中获得无限循环时,您唯一的选择(我知道)是关闭选项卡.当然,这意味着您在当前窗口中丢失了所有工作!是否有一种简单的方法可以阻止无限执行的脚本?
这一切都是因为我决定在我的循环中交换方向
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--
.
有任何想法吗??我仍然打开标签,我希望在不关闭标签的情况下取回标签:-)
如何获得泛型类型的"真实"类?
例如:
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)
谢谢
我正在针对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用户'没有帮助.
我确定我错过了一些简单的东西,但我无法让简单的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) 在我的代码中,我有以下行.
double temp=(c12*fileSize);
Run Code Online (Sandbox Code Playgroud)
但是在乘法后我得到了-990102696
.
任何人都可以帮助我吗?有些尺寸限制出错吗?
我有一组并行运行的单元测试(这很重要,如果测试是单线程运行的,它可以正常运行),这使得调用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) 我正在尝试使用以下命令在sql server中打印选项卡:
select 'tab-->' + char(9) + '<--tab'
Run Code Online (Sandbox Code Playgroud)
但它似乎不起作用,总是打印
tab--> <--tab
Run Code Online (Sandbox Code Playgroud)
有什么我想念的吗?
在关于ConcurrentStack/Concurrent Queue的C#/.NET Little Wonders文章中,提到了关于以下.Count
操作的以下内容ConcurrentStack
:
Count获取堆栈的快照,然后计算项目.这意味着它是O(n)操作,如果您只想检查空堆栈,请调用IsEmpty而不是O(1).
我在多线程编程方面还不是很有经验,但我明白为什么你不能只是遍历集合中的项目并对它们进行计数,因为集合可能同时被其他线程更改.但是,如果您必须锁定 ConcurrentStack
足够长的时间来制作快照,那么只要在锁定项目时对项目进行计数就不会更容易,返回该计数并释放锁定,而不是花费开销和时间成本在释放锁之前生成整个快照?
我可能会遗漏一些关于它是如何工作的基本知识,我将不胜感激您的任何想法或见解.
我在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表达式中每一行的缩进,是否有人知道如何快速修复此代码?
.net ×4
c# ×3
java ×2
sql-server ×2
azure ×1
char ×1
codedom ×1
concurrency ×1
generics ×1
indentation ×1
javascript ×1
jsfiddle ×1
lambda ×1
roslyn ×1
sql ×1
t-sql ×1
timeout ×1
trace ×1
unit-testing ×1