小编Yaa*_*lis的帖子

应该为测试和错误修复分配多少时间

每当我必须估计一个项目的时间(或审查其他人的估计)时,就会在alpha版本和生产版本之间分配测试/错误修复的时间.我非常清楚,对于未知大小的问题集,到目前为止对未来的估计并不是成功估算的好方法.然而,由于各种原因,一定程度的小时数总是在一开始就分配给这部分工作.而这个初始估计距离真实的最终值越远,那些参与调试的人就越需要在他们"超过"估计值时采取的悲伤.

所以我的问题是:你在制定这样的估算时看到的最佳策略是什么?整体开发估计的百分比是平的吗?设定小时数(期望它会上升)?别的什么?

还需要考虑的其他事项:如果客户负责测试(而不是内部质量保证),您将如何回答这种情况,并且您必须分配一定的时间来回应他们可能找到或未找到的错误(因此您需要找出错误修复的时间估计但不测试

project-management estimation

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

C#中ToString()的需求是什么?

我在c sharp中使用下面的代码.但是两个WriteLine语句都给出了相同的结果25.那么在c sharp中转换Tostring需要什么?有什么特别的目的吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace sample
{
  class Program
  {
    static void Main(string[] args)
    {
        int value = 25;
        Console.WriteLine(value.ToString());
        Console.WriteLine(value);
        Console.ReadLine();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

c#

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

在VS属性窗口中将UserControl属性设置为不显示

我的Asp.net项目中有一个UserControl,它有一个公共属性.当用户在IDE中突出显示UserControl的实例时,我不希望此属性显示在Visual Studio属性窗口中.我应该使用什么属性(或其他方法)来防止它出现?

class MyControl : System.Web.UI.UserControl {
  // Attribute to prevent property from showing in VS Property Window?
  public bool SampleProperty { get; set; }

  // other stuff
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net attributes properties visual-studio

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

从类库中访问App.Config设置通过单元测试项目调用

我有以下设置:

  • ASP.net 3.5网站项目
  • 带有业务逻辑的C#类库
  • 用于单元测试的C#类库

业务逻辑库执行所有数据库访问.它通过访问System.Configuration.ConfigurationManager.ConnectionStrings从Web站点的web.config文件获取连接字符串.当网站调用库时,这可以正常工作,因为库会查找调用者的配置.

我希望能够通过单元测试类库测试我的业务逻辑.我在测试类库的根目录中放了一个App.config文件.根据我的阅读,当测试库调用属于业务逻辑库的数据访问过程时,应该访问和使用测试库的App.config文件中的连接设置.但是,当我尝试运行单元测试时,我收到错误,表明测试库的App.config文件(和/或其内容)未成功访问.

我对配置属性的检索(来自业务逻辑库)如下所示:

public SqlConnection MainConnection {
  get {
    string conn = "";
    try {
      conn = System.Configuration.ConfigurationManager.ConnectionStrings["connString"].ConnectionString;
    } catch {
      // might be calling from test project. Need to reference app settings
      conn = System.Configuration.ConfigurationManager.AppSettings["connString"];
    }
    return new SqlConnection(conn);
  }
}
Run Code Online (Sandbox Code Playgroud)

当从网站项目调用它时,它可以工作.在单元测试中,conn变量永远不会设置为任何东西(我也尝试过使用System.Configuration.ConfigurationSettings.AppSettings,而不是使用相同的结果).当从NUnit GUI中调用时,我需要做什么才能使业务逻辑类库成功检索单元测试类库设置?

c# asp.net configuration nunit app-config

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

RegEx匹配模式,只要它没有前面的不同模式

我需要一个用于文本替换的正则表达式.示例:要匹配的文本ABC(可以用方括号括起来),替换文本是DEF.这很基本.该复杂的是,我希望在比赛ABC时,它是由前面的图案文字\[[\d ]+\]\.-换句话说,当一个单词之前或设置在括号中的词,随后一段时间.

以下是要匹配的源文本的一些示例,以及在进行正则表达式替换后的结果:

1. [xxx xxx].[ABC] > [xxx xxx].[ABC] (does not match - first part fits the pattern)
2. [xxx xxx].ABC   > [xxx xxx].ABC   (does not match - first part fits the pattern)
3. [xxx.ABC        > [xxx.DEF        (matches - first part has no closing bracket)
4. [ABC]           > [DEF]           (matches - no first part)
5. ABC             > DEF             (matches - no first part)
6. [xxx][ABC]      > [xxx][DEF]      (matches - no …
Run Code Online (Sandbox Code Playgroud)

.net c# regex

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

使用MiniProfiler和EF 5以及Autofac分析DbContext的正确方法

MiniProfiler网站给出了生成实体框架下面的代码ObjectContext:

public static MyModel Get()
{
  var conn =  new StackExchange.Profiling.Data.EFProfiledDbConnection(GetConnection(), MiniProfiler.Current);
  return ObjectContextUtils.CreateObjectContext<MyModel>(conn); // resides in the MiniProfiler.EF nuget pack
}
Run Code Online (Sandbox Code Playgroud)

但是,使用Entity Framework 5,我没有使用ObjectContext- 而是我使用的是DbContext.我不能在这里插入模型名称,因为该CreateObjectContext<T>()方法需要T是类型ObjectContext.(出于同样的原因,此答案中给出的代码也不起作用).

另外,我使用autofac来初始化我的Db连接.这是使用以下内容注册的(MyData=我的EF DataContext的名称):

Builder.RegisterType<MyData>().As<DbContext>().InstancePerHttpRequest();
Run Code Online (Sandbox Code Playgroud)

因此结合两部分:如何使用autofac初始化与MiniProfiler.EF绑定的DbContext?如果这是不可能的,至少我怎么做第一部分(为MiniProfiler.EF创建一个工厂方法来返回DbContext)?

autofac dbcontext mvc-mini-profiler entity-framework-5

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

使用SqlMetal和Visual Studio时自动生成DataContext设计器文件

我使用LinqToSql使用SqlMetal来为我的ASP.net应用程序提供我的DataContext.dbml类.当我最初创建DataContext.dbml文件时,Visual Studio使用它来创建相关的DataContext.designer.cs文件.此设计器文件包含C#中的DataContext类,该类在整个应用程序中使用(并且源自dbml文件中的XML),对于弥合SqlMetal的输出与使用LinqToSql的DataContext之间的差距至关重要.

但是,当我对数据库进行更改并重新创建dbml文件时,设计器文件永远不会在我的网站中重新生成.而是维护旧的设计器文件(因此,无法通过LinqToSql DataContext类访问DBML文件的任何更改).

到目前为止,我能够使用的唯一过程是重新生成设计器文件

  1. 转到Windows资源管理器并删除dbml和designer.cs文件
  2. 转到Visual Studio并在解决方案资源管理器中单击"刷新".dbml和designer.cs文件现在从项目中消失.
  3. 使用SqlMetal重新生成dbml文件
  4. 转到Visual Studio并在解决方案资源管理器中单击"刷新".现在重新创建designer.cs文件.

当检测到一个还没有designer.cs文件的新dbml文件时,Visual Studio似乎只会生成designer.cs文件.这个过程是非常不切实际的,因为它涉及几个手动步骤并且使用源代码控制来搞乱.

有谁知道如何自动重新生成designer.cs文件而无需遵循上面概述的手动删除/刷新/重新生成/删除过程?

asp.net dbml sqlmetal visual-studio-2008 linq-to-sql

5
推荐指数
1
解决办法
8258
查看次数

是否有理由永远不会使用主键列?

我有一个例程,它将创建单独的表(Sql Server 2008)来存储我的应用程序生成的报告的结果(Asp.net 3.5).每个报告都需要自己的表,因为表的列会根据报告设置而有所不同.一个表将包含10-5,000行之间,很少超过10,000行.

以下使用规则适用:

  • 存储后,数据将永远不会更新.
  • 无论何时访问表的结果,都将检索所有数据.
  • 没有其他表需要与此表执行连接.

知道这一点,是否有理由在表上创建PK索引列?这样做是否有助于以任何方式检索数据的性能,如果可以,这将超过插入数据时更新索引的额外负载(我知道10K记录的数量相对较少,但这个解决方案需要是能够扩展).

更新:以下是有关正在处理的数据的更多详细信息,这些信息将在每个报告的一个表的当前设计决策中进行:

  • 表将记录一组数值(基于报告设置在运行时设置),这些数值对应于一组不同的参考varchar值(也基于报告设置在运行时设置).
  • 每当检索到数据时,在将输出显示给用户之前,将需要在服务器上进行一些后处理(因此我将始终检索所有值).

我也怀疑有人声称每次报告运行时都必须创建一个新表.但是,考虑到每次运行报告时都可能需要不同的列(数量,名称和数据类型),我看不到一个很好的选择.

我能想到的另一件事是拥有一个ID列(标识ReportVersionID,对应于另一个表),ReferenceValues列(varchar字段,包含所有引用值,按指定顺序,由一些分隔符分隔)和NumericValues列(与ReferenceValues相同,但对于数字),然后当我检索结果时,将所有内容放入系统中的专用对象,根据定义的分隔符分隔值).这看起来更合适吗?

database sql-server indexing database-design primary-key

5
推荐指数
1
解决办法
394
查看次数

无论插入顺序如何,等效内容相等的Dictionary的实现并返回相同的哈希码

我需要使用Dictionary<long, string>给定两个实例的集合d1以及d2它们各自具有相同KeyValuePair<long, string>内容的集合,这些集合可以按任何顺序插入:

  1. (d1 == d2) 评估为 true
  2. d1.GetHashCode() == d2.GetHashCode()

通过使用SortedDictionary而不是常规来最容易地实现第一个要求Dictionary.

第二个要求是必要的,因为我需要存储一个点Dictionary<Dictionary<long, string>, List<string>- 主要Dictionary类型用作另一个的键Dictionary,如果HashCodes不基于相同的内容进行评估,则使用ContainsKey()将不会按照我想要的方式工作(即:如果已经有一个项目d1作为其键插入到字典中,那么dictionary.ContainsKey(d2)应该评估为true.

为此,我创建了一个新对象class ComparableDictionary : SortedDictionary<long, string>,并包含以下内容:

public override int GetHashCode() {            
   StringBuilder str = new StringBuilder();
   foreach (var item in this) {
      str.Append(item.Key);
      str.Append("_");
      str.Append(item.Value);
      str.Append("%%");
   }
   return str.ToString().GetHashCode();
 }
Run Code Online (Sandbox Code Playgroud)

在我的单元测试中,这符合相等和哈希码的标准.但是,在阅读GetHashCode的指南和规则时,我遇到了以下内容:

规则:当对象包含在依赖于哈希代码保持稳定的数据结构中时,GetHashCode返回的整数必须永远不会更改

虽然很危险,但允许一个对象的哈希码值可以随着对象的字段变异而变异.如果你有这样一个对象,并把它放在一个哈希表中,那么改变对象的代码和维护哈希表的代码需要有一些商定的协议,以确保对象在进入时不会发生变异.哈希表.该协议的外观取决于您.

如果对象的哈希代码在哈希表中变异,那么显然Contains方法就会停止工作.你把对象放在#5桶中,你改变它,当你问集合是否包含变异对象时,它会在#74桶中查找并找不到它.

请记住,对象可以以您不期望的方式放入哈希表中.许多LINQ序列运算符在内部使用哈希表.在枚举返回它们的LINQ查询时,不要危险地改变对象! …

c# dictionary equality gethashcode sorteddictionary

5
推荐指数
1
解决办法
621
查看次数

我如何通过Git在我的原点的分支上结账?

/abc我分叉的GitHub上有一个存储库.所以我的叉子在me/abc.

吉姆还在/abc他们的回购中分叉Jim/abc.吉姆加了一个叫做的分支2.0.这个分支不存在/abc.

我已经从me/abc本地克隆了fork (使用GitHub for Window).我现在想2.0Jim/abc本地对分支进行一些修改,然后他们提交并推送更改.

这样做的最佳方法是什么?

git branch github git-checkout

5
推荐指数
1
解决办法
344
查看次数