小编Mik*_*ike的帖子

无法使用Resharper调试测试 - 无法启动调试器

我无法在项目中使用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

c# tdd resharper

18
推荐指数
2
解决办法
8150
查看次数

使用CI服务器进行自动部署

在我们的项目中,部署总是很痛苦,主要是因为发布管理团队所犯的错误.他们搞砸了配置或以某种方式安装了错误的版本.我们使用teamcity作为我们的CI服务器,它生成工件作为zip文件(dll和exe),通常传递给发布团队.我的问题是,有没有办法自动化整个部署过程?

有没有商业工具,支持这个?

我们希望执行以下操作:

  • 使用特定于环境的值更新配置文件.

  • 将Windows服务安装到服务器.

  • 将UI(WPF)包上传到集中位置(由另一个应用程序拉下来,类似于启动器).

  • 更改数据库连接字符串.

针对各种环境(如int,uat和prod)执行以上所有操作

数据库部署因此是一个单独的野兽,因此不需要涉及.

任何最佳实践,工具或解决方案都将非常有用.

谢谢,-Mike

c# msbuild nant wpf teamcity

12
推荐指数
1
解决办法
4203
查看次数

整数是如何存储在内存中的?

这很可能是任何人都会问的最愚蠢的问题,但不管我希望我能找到一个明确的答案.

我的问题是 - 整数存储在计算机内存中怎么样?

在c#中,整数的大小为32位.MSDN说我们可以在整数变量中存储-2,147,483,648到2,147,483,647的数字.

根据我的理解,一个位只能存储2个值,即0和1.如果我只能存储0或1,我怎么能在一个位内存储2到9的数字?

更确切地说,我说这个代码int x = 5; 这将如何在内存中表示,或者换句话说如何将5转换为0和1,它背后的惯例是什么?

c# binary twos-complement

11
推荐指数
2
解决办法
5951
查看次数

如何表示当前的英国时间?

我在服务器和客户端之间转换日期时遇到了问题,两者都在德国运行.客户端计算机上的区域设置可以设置为英国或德国.我从服务器接收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)

c# datetime

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

如何在将datetime对象存储到数据表中时保留DateTime Kind?

我遇到了将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)

c# datatable datetime

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

深度优先搜索的递归方法与堆栈

我有一个如下方法,它搜索一个集合并递归地评估一个条件:

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)

我的问题是,与递归版本相比,当树的深度较大时,堆栈版本是否提供了任何性能优势?

c#

7
推荐指数
2
解决办法
5926
查看次数

Dispatcher Scheduler - Rx

我们正在使用.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)

谢谢,

-麦克风

c# system.reactive

7
推荐指数
3
解决办法
5545
查看次数

实时更新UI

我要创建一个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)

c# wpf

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

CancellationToken和CancellationTokenSource-如何使用它?

我有一个名为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)

注意我需要取消任何以前生成的任务,并且每个生成的任务都应该超时.

c# task-parallel-library c#-4.0

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

如何以更好的方式分配DBNull?

我需要解析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)

有没有更好的方法呢?

.net c# parsing dbnull datarow

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