我无法在项目中使用Resharper-Debug选项调试我的测试.我看到很多人提出这个问题,但是没有找到解决我问题的坚实建议.奇怪的是,如果我创建一个示例项目并编写一个简单的单元测试,我就可以毫无问题地调试它.但是当我尝试在我当前的项目中执行此操作时,它只是抛出一个对话框说"无法启动调试器".我已经与同行一起检查了这个问题,他们不会遇到这个问题:(
运行测试时我也没有任何问题.
它是一台XP机器,以下是resharper的版本:
JetBrains ReSharper 5.1 C#Edition
Build 5.1.1753.4 on 2010-10-15T15:51:30许可:XXXXXXX
插件:无.
Visual Studio 9.0.21022.8.版权所有©2003-2011 JetBrains sro.版权所有.
谢谢,-M
在我们的项目中,部署总是很痛苦,主要是因为发布管理团队所犯的错误.他们搞砸了配置或以某种方式安装了错误的版本.我们使用teamcity作为我们的CI服务器,它生成工件作为zip文件(dll和exe),通常传递给发布团队.我的问题是,有没有办法自动化整个部署过程?
有没有商业工具,支持这个?
我们希望执行以下操作:
使用特定于环境的值更新配置文件.
将Windows服务安装到服务器.
将UI(WPF)包上传到集中位置(由另一个应用程序拉下来,类似于启动器).
更改数据库连接字符串.
针对各种环境(如int,uat和prod)执行以上所有操作
数据库部署因此是一个单独的野兽,因此不需要涉及.
任何最佳实践,工具或解决方案都将非常有用.
谢谢,-Mike
这很可能是任何人都会问的最愚蠢的问题,但不管我希望我能找到一个明确的答案.
我的问题是 - 整数存储在计算机内存中怎么样?
在c#中,整数的大小为32位.MSDN说我们可以在整数变量中存储-2,147,483,648到2,147,483,647的数字.
根据我的理解,一个位只能存储2个值,即0和1.如果我只能存储0或1,我怎么能在一个位内存储2到9的数字?
更确切地说,我说这个代码int x = 5
; 这将如何在内存中表示,或者换句话说如何将5转换为0和1,它背后的惯例是什么?
我在服务器和客户端之间转换日期时遇到了问题,两者都在德国运行.客户端计算机上的区域设置可以设置为英国或德国.我从服务器接收CET格式的日期,我需要在UI上将此时间表示为英国时间.例如,从服务器收到的时间,例如01/07/2010 01:00:00应该在UI上表示为01/07/2010 00:00:00.我已经为此目的编写了一个转换器,但是在运行它时会产生2小时的时差.下面是代码,请帮忙吗?
public class LocalToGmtConverter : IDateConverter
{
private readonly TimeZoneInfo timeZoneInfo;
public LocalToGmtConverter()
: this(TimeZoneInfo.Local)
{
}
public LocalToGmtConverter(TimeZoneInfo timeZoneInfo)
{
this.timeZoneInfo = timeZoneInfo;
}
public DateTime Convert(DateTime localDate)
{
var utcKind = DateTime.SpecifyKind(localDate, DateTimeKind.Utc);
return utcKind;
}
public DateTime ConvertBack(object fromServer)
{
DateTime serverDate = (DateTime)fromServer;
var utcOffset = timeZoneInfo.GetUtcOffset(serverDate);
var uiTime = serverDate- utcOffset;
return uiTime;
}
}
Run Code Online (Sandbox Code Playgroud) 我遇到了将DateTime对象存储到数据表中的问题,它丢失了设置到它的Kind信息.例如,如果DateTime.Kind是UTC,一旦我将它分配给datarow值,它就会将Kind更改为Unspecified.Please找到下面的代码.
public class LocalTimeToUtcConverter
{
public DateTime Convert(DateTime localDate)
{
var utcOffset = TimeZoneInfo.Local.GetUtcOffset(localDate);
var utc = localDate.ToUniversalTime();
return utc + utcOffset;
}
}
[Test]
public void Should_set_datetime_column_kind_to_utc()
{
var localDate = new DateTime(2010, 11, 01, 00, 00, 00);
Assert.That(localDate.Kind == DateTimeKind.Unspecified);
var converter = new LocalTimeToUtcConverter();
DateTime date = converter.Convert(localDate);
Assert.That(localDate.Kind == DateTimeKind.Utc);
var data = CreateTable(date);
//Failes-Why????
Assert.That(((DateTime)data.Rows[0].ItemArray[0]).Kind == DateTimeKind.Utc);
}
private DataTable CreateTable(DateTime date)
{
DataTable table = new DataTable();
table.Columns.Add(new DataColumn("Date1", typeof(DateTime)));
for (int i = …
Run Code Online (Sandbox Code Playgroud) 我有一个如下方法,它搜索一个集合并递归地评估一个条件:
public static bool Recurse(this INodeViewModel node, Func<INodeViewModel,bool> predicate)
{
INodeViewModel currentNode = node;
return predicate(currentNode) || node.Children.Select(x => Recurse(x, predicate)).Any(found => found);
}
Run Code Online (Sandbox Code Playgroud)
或者,这可以使用堆栈来实现,以避免递归,如下所示:
public static bool UsingStack(this INodeViewModel node, Func<INodeViewModel, bool> predicate)
{
var stack = new Stack<INodeViewModel>();
stack.Push(node);
while(stack.Any())
{
var current = stack.Pop();
if (predicate(current))
return true;
foreach (var child in current.Children)
{
stack.Push(child);
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,与递归版本相比,当树的深度较大时,堆栈版本是否提供了任何性能优势?
我们正在使用.NET 3.5并已开始使用Reactive Extensions.我们正在使用与.NET 3.5兼容的system.Reactive(运行时版本:v2.0.50727).
我正在尝试观察调度程序调度程序上的事件,因为我正在使用WPF控件(它是winforms shell,嵌入了WPF主机控件),但我无法在Scheduler类上找到该选项(system.reactive.concurrency.scheduler) .看起来它可以从.NET 4.0开始提供.我的问题是,如何在.NET 3.5中使用它?请注意,调用发生在我的ViewModel中,而不是View.
码:
this.ObservePropertyChanged(x => x.Queue)
//I cant find scheduler dispatcher option,
//there are other options such as current, imeediete, new etc.
.ObserveOn(Scheduler.Dispatcher)
.Subscribe(RefreshQueues);
Run Code Online (Sandbox Code Playgroud)
谢谢,
-麦克风
我要创建一个WPF UI,这subsribes实时外汇汇率(货币+速度)的更新,并将其显示在网格(每秒大约1000次更新,这意味着网格中的每个行可能获得更新高达每秒1000次) .网格在任何时间点都至少有50行.
为此,我创建了一个Viewmodel,它订阅更新事件,并将这些更新存储在并发字典中,其中key作为符号,值作为RateViewModel对象.然后我有另一个可观察的集合,它包含所有那些rateviewmodel对象,并将其绑定到网格.
码:
public class MyViewModel
{
private readonly IRatesService ratesService;
private readonly ConcurrentDictionary<string, RateViewModel> rateDictionary;
private object _locker = new object();
public MyViewModel(IRatesService ratesService)
{
this.ratesService = ratesService;
this.ratesService.OnUpdate += OnUpdate;
rateDictionary = new ConcurrentDictionary<string, RateViewModel>();
RateViewModels = new ObservableCollection<RateViewModel>();
}
private void OnUpdate(object sender, RateUpdateEventArgs e)
{
RateViewModel exisistingRate;
if (!rateDictionary.TryGetValue(e.Update.Currency, out exisistingRate))
{
exisistingRate = new RateViewModel(new Rate(e.Update.Currency, e.Update.Rate));
rateDictionary.TryAdd(e.Update.Currency, exisistingRate);
return;
}
lock (_locker)
{
exisistingRate.UpdateRate(e.Update.Rate);
}
Application.Current.Dispatcher.BeginInvoke(new Action(() => SearchAndUpdate(exisistingRate)));
} …
Run Code Online (Sandbox Code Playgroud) 我有一个名为Load的UI按钮.它产生一个线程,反过来产生一个任务.任务等待,如果过期,任务将被取消."加载"按钮未禁用,用户可以多次单击它.每次单击时,都应取消上一个任务.
我对如何在这里使用CancellationTokenSource和CancellationToken感到困惑.下面是代码.您能否建议如何使用它以及以下用法是否有任何问题?请不要异步,因为我们还没有.
CancellationTokenSource _source = new CancellationTokenSource();
public void OnLoad()
{
//Does this cancel the previously spawned task?
_source.Cancel();
_source.Dispose();
_source = new CancellationTokenSource();
var activeToken = _source.Token;
//Do I need to do the above all the time or is there an efficient way?
Task.Factory.StartNew(() =>
{
var child = Task.Factory.StartNew(() =>
{
Thread.Sleep(TimeSpan.FromSeconds(20));
activeToken.ThrowIfCancellationRequested();
}, activeToken);
if (!child.Wait(TimeSpan.FromSeconds(5)))
{
_source.Cancel();
}
});
}
Run Code Online (Sandbox Code Playgroud)
注意我需要取消任何以前生成的任务,并且每个生成的任务都应该超时.
我需要解析a中的值DataRow
并将其分配给另一个DataRow
.如果输入有效,那么我需要将其解析为a double
,否则DBNull
为输出添加一个值.我正在使用以下代码:
public double? GetVolume(object data)
{
string colValue = data == null ? string.Empty : data.ToString();
double volume;
if (!Double.TryParse(colValue.ToString(), out volume))
{
return null;
}
return volume;
}
public void Assign(DataRow theRowInput,DataRow theRowOutput)
{
double? volume = GetVolume(theRowInput[0]);
if(volumne.HasValue)
theRowOutput[0] = volume.value;
else
theRowOutput[0] = DbNull.Value;
return theRowOutput;
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?